2011-09-07 91 views
1

i'm发射了AJAX/JSONP请求到我cloudant应用程式:JS警告:资源解释为脚本,但与MIME类型文本传送/纯

var obj = $.ajax({ 
     url: "http://xyz", 
     dataType: 'jsonp', 
     success: function(data) { 
      //SOME CODE 
     }, 
     error: function() { 
      //SOME CODE 
     } 
    }); 

的响应是确定,我可以读出我的数据。 但I'm得到以下JS警告:

Resource interpreted as Script but transferred with MIME type text/plain. 

我需要提出这个要求的JSONP请求(跨域策略),据我所知JSONP收益为脚本,并得到由 浏览器执行。 我必须设置请求标头吗? 我用'接受'和'转换器'选项尝试过,但没有使它工作。 (I'm使用GoogleChrome,而且还发生在Safari浏览器/ FF)

欢呼声, 汤姆

PS:我想摆脱的警告,因为这Ajax请求被每2秒触发。所以控制台看起来很糟糕......

+0

可能的重复:** [Chrome说:“资源解释为脚本,但使用MIME类型text/plain传输。”,什么给出?](http://stackoverflow.com/questions/3467404/chrome-says-resource - 解释为脚本,但转让与MIME类型文本)** – hippietrail

回答

4

当它发出的JSONP脚本的服务器应该发送Content-Type头设置为text/javascript

+0

谢谢。但它在云端,它总是发送“文本/纯文本”。我无法更改内容类型。是否也可以在客户端上接受不同的内容类型?或者是否有人知道是否有可能在cloudant上改变它? – tom81

+1

如果您将这个漏洞报告给云计算开发人员,您会为很多人提供帮助。这可能是最好的服务,等待他们的修复。 – Jacob

+0

好的。我去做。谢谢 – tom81

0

问题是在目标服务器上,因为它的设置Content-Type: Text/plain

你不能强制执行不访问目标服务器。它应该是Content-Type: text/javascript

+0

你知道云计算可能吗? – tom81

+0

@ tom81:它取决于后端代码,而不是数据库 – genesis

1

CouchDB本身正在发送文本/纯文本内容类型。如果您发送'Accept:application/json'作为标题,唯一可以说服它发送的其他类型是'application/json'。

虽然,看起来CouchDB应该发送文本/ JavaScript,如果提供jsonp响应。如果你可以提交票据,我相信它会完成。

+0

,因为这是核心CouchDB中的问题,因此引发了https://issues.apache.org/jira/browse/COUCHDB-1274。可能在早上解决它。 –

+0

听起来不错。谢谢。 – tom81

0

您是否在标头中发送任何编码信息?我遇到了CouchDB响应问题,并发现将charset=utf-8添加到我的AcceptContent-Type标题导致CouchDB返回text/plain内容而不是我期待的application/json。也许你可以通过改变你的头来解决这个问题,如果案例足够相似。

相关问题