由于mime类型不匹配,IE9脚本响应被阻止

时间:2011-05-13 02:50:01

标签: types response internet-explorer-9 mime

我使用以下代码段将谷歌融合表中的数据加载为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类型不匹配。使用jsonCallback param时IE9报告以下脚本错误,因为它不喜欢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 

2 个答案:

答案 0 :(得分:12)

问题是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发送了关于此邮件的邮件。

答案 1 :(得分:0)

我只是取出fileref.setAttribute("type", "text/javascript");,因为服务器更新mime类型的可能性是不可预测的。