js警告:资源被解释为脚本,但使用MIME类型text / plain进行传输

时间:2011-09-07 18:50:14

标签: javascript jquery warnings jsonp cloudant

我正在向我的cloudant应用程序发出ajax / jsonp请求:

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

响应还可以,我可以读出我的数据。 但我得到以下js警告:

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

我需要将此请求作为jsonp请求(跨域策略),AFAIK jsonp作为脚本返回并由 浏览器。 我必须设置请求标头吗? 我尝试使用'接受'和'转换器'选项,但是还没有让它工作。 (我使用的是GoogleChrome,但也发生在Safari / FF中)

欢呼声, 汤姆

PS:我希望摆脱警告,因为这个ajax请求每2秒触发一次。所以控制台看起来很糟糕......

4 个答案:

答案 0 :(得分:4)

服务器在发送JSONP脚本时应将Content-Type标头设置为text/javascript

答案 1 :(得分:1)

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

但是,如果提供jsonp响应,CouchDB似乎应该发送text / javascript。如果你可以提交一张票,我相信它会完成。

答案 2 :(得分:0)

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

如果不访问目标服务器,则无法强制执行。它应该是Content-Type: text/javascript

答案 3 :(得分:0)

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