禁用Chrome严格MIME类型检查
有没有办法在Chrome中禁用strict MIME type checking
。
实际上我正在跨域提出JSONP请求。 它在Firefox上工作得很好但是,在使用chrome时它在控制台中给出了一些错误。
拒绝从’ https://example.com ‘执行脚本,因为其MIME类型(’text / plain’)不可执行,并且启用了严格的MIME类型检查。
它在Mozilla中完美运行。问题仅出现在镀铬中
以下是请求的响应标头..
Cache-Control:no-cache, no-store Connection:Keep-Alive Content-Length:29303 Content-Type:text/plain;charset=ISO-8859-1 Date: xxxx Expires:-1 Keep-Alive:timeout=5 max-age:Thu, 01 Jan 1970 00:00:00 GMT pragma:no-cache Set-Cookie:xxxx Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options:nosniff X-Frame-Options:SAMEORIGIN
解决我的想法 :将内容类型外部设置为application/javascript
服务器应该使用JSONP application/javascript
的正确MIME类型进行响应,并且您的请求应该告诉jQuery您正在加载JSONP dataType: 'jsonp'
请参阅此答案以获取更多详细信息! 你也可以看一下这个,因为它解释了为什么用text/plain
加载.js
文件不起作用。
就我而言,我关闭了nginx
上的X-Content-Type-Options
然后工作正常。
# Not work add_header X-Content-Type-Options nosniff; # OK (comment out) #add_header X-Content-Type-Options nosniff;
对于apache来说也是一样的。
#Header set X-Content-Type-Options nosniff
一次也有同样的问题,
如果您无法解决问题,可以在命令行上运行以下命令
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
注意:您必须导航到chrome的安装路径。
例如: cd C:\Program Files\Google\Chrome\Application
将打开开发人员会话Chrome浏览器,您现在可以在新的Chrome浏览器上启动您的应用。
我希望这应该有所帮助
文件假装另一个扩展时的另一种解决方案
我使用这个.htaccess
在var.js
文件中使用php
。
AddType application/x-httpd-php .js
然后我在.js文件中编写php代码
当我在Chrome上收到MIME类型警告时,我通过在.js(but php)
文件中添加Content-Type
标题行来修复它。
浏览器不会执行.js
文件,因为apache将文件的Content-Type
标头发送为.htaccess
定义的application/x-httpd-php
。 这是一个安全原因。 但是,只要htaccess
命令模仿,apache就不会执行php,这是必要的。 所以我们需要用php函数header()
覆盖apache的Content-Type
头。 我想,当php发送它而不是apache之前,apache会停止发送它自己的头。