django admin报错Refused to execute script from 'xx' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled问题解决

在django admin运行后,访问http://127.0.0.1:8000报错。

报错信息原文:

Refused to execute script from 'http://127.0.0.1:8000/static/layui/layui.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.

翻译:拒绝执行脚本…….因为它的MIME类型(‘text/plain’)是不可执行的,并且启用了严格的MIME类型检查。

因为浏览器设置的原因导致的,可能有多种原因,下面分析了四种情况。

第一种错误:
js、css引用的顺序十分重要,如果没有实现你想要的效果,却找不到哪里出现问题了,及时查看引用顺序。例如:jQuery要在bootstrap前面引用。

第二种错误:
js、css引用的顺序没有问题。
在settings.py中加一条配置:

SECURE_CONTENT_TYPE_NOSNIFF = False

这个X-Content-Type-Optionsnosniff,错误解释:当你请求一个文件从raw.githubusercontent.com,gist.githubusercontent.com,bitbucket.org或者gitlab.com,他们通常提供(在JavaScript,HTML,CSS,以及一些其他文件类型的情况下)用Content-Typetext/plain。结果,大多数现代浏览器实际上不会将其解释为JavaScript,HTML或CSS。

第三种错误:
还有一种情况可能是Windows系统上不知道什么时候破坏了注册表,把扩展名为js的文件类型注册为'text/plain',应该为'application/javascript'

要解决这个问题,请在Django项目 setting.py 中 末尾添加如下代码,强制Django使用'application/javascript'作为 js文件类型
第三种解决方法:

# 在settings.py末尾加入
import mimetypes
mimetypes.add_type('text/css', '.css')
mimetypes.add_type('application/javascript', '.js')

第四种错误:
报错信息:

Refused to display 'http://localhost:8000/admin/orders/' in a frame because it set 'X-Frame-Options' to 'deny'.

配置X-Frame-Options主要用处是用于防止点击劫持。

X-Frame-Options有以下配置项:
1.DENY:不能被嵌入到任何iframe或者frame中。
2.SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中
3.ALLOW-FROM uri:只能被嵌入到指定域名的框架中。

解决方法:
在settings.py中加一条配置:

X_FRAME_OPTIONS = 'SAMEORIGIN'
# DENY :表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许
# SAMEORIGIN :表示该页面可以在相同域名页面的 frame 中展示
# ALLOW-FROM uri :表示该页面可以在指定来源的 frame 中展示

出处:www.l1mn.com

原文标题:django admin报错Refused to execute script from 'xx' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled问题解决

原文地址:https://www.l1mn.com/p/j0kba3.html

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

评论

皖ICP备2023023451号

Copyright © L1MN.COM 联系方式:l1mnfw@163.com