由于 mime 类型不匹配,IE9 脚本响应被阻止
Posted
技术标签:
【中文标题】由于 mime 类型不匹配,IE9 脚本响应被阻止【英文标题】:IE9 script response blocked due to mime type mismatch 【发布时间】:2011-08-24 14:42:25 【问题描述】:我使用下面的代码 sn-p 从 google fusion table 加载数据为 json。
var fileref = document.createElement("script");
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", "http://tables.googlelabs.com/api/query?sql=select * from 588320&hdrs=false&jsonCallback=LoadTable");
在 IE8、FF、Chrome 中运行良好,但现在 IE9 不知道如何处理回调,因为响应和 mime 类型不匹配。 IE9 在使用 jsonCallback 参数时会报以下脚本错误,因为它不喜欢 mime 类型。
SEC7112:来自 http://tables.googlelabs.com/api/query?sql=select * 的脚本来自 588320&hdrs=false&jsonCallback=LoadTable 由于 mime 类型不匹配而被阻止。
有没有一种解决方法可以让我不必在本地托管 src(或者我做错了什么)?
Response Headers
Content-Type text/plain; charset=UTF-8
Content-Encoding gzip
Transfer-Encoding chunked
Date Fri, 13 May 2011 02:19:11 GMT
Expires Fri, 13 May 2011 02:19:11 GMT
Cache-Control private, max-age=0
X-Content-Type-Options nosniff
X-Frame-Options SAMEORIGIN
X-XSS-Protection 1; mode=block
Server GSE
Request Headers
Host tables.googlelabs.com
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Cache-Control max-age=0
【问题讨论】:
遇到了类似的问题:Script from https://api.twitter.com/1/statuses/user_timeline.json?callback=jsonp1314805825247&_=1314805825940&&screen_name=username_here&count=1 was blocked due to mime type mismatch
IE 很棒!!!! :(
【参考方案1】:
我只删除fileref.setAttribute("type", "text/javascript");
,因为服务器更新mime 类型的可能性是不可预测的。
【讨论】:
尝试了上面的建议,但没有奏效,报告同样的错误。【参考方案2】:问题在于 Google 正在发送 X-Content-Type-Options: nosniff
声明并返回一个没有 JavaScript MIME 类型的 JavaScript 文件。这只能通过删除 nosniff 声明或通过修复 MIME 类型以指示该文件实际上是脚本来解决。
http://blogs.msdn.com/b/ieinternals/archive/2010/09/27/ie9-beta-google-image-search-javascript-content-type-and-nosniff.aspx
我已经向 Google 发送了关于这个的邮件。
【讨论】:
不错的博文 Eric。我假设您可以(暂时)强制页面进入兼容模式以避免这种情况。 不,在这种情况下没有帮助。以上是关于由于 mime 类型不匹配,IE9 脚本响应被阻止的主要内容,如果未能解决你的问题,请参考以下文章
由于 MIME 类型不匹配,功能被阻止(X-Content-Type-Options: nosniff)
错误:由于 MIME 类型(“text/html”)不匹配而被阻止(X-Content-Type-Options: nosniff)
由于 MIME 类型(“text/html”)不匹配(X-Content-Type-Options: nosniff)而被阻止
由于 MIME 类型 (“text/html”) 不匹配 (X-Content-Type-Options: > nosniff),资源被阻止