我正在向我的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秒触发一次。所以控制台看起来很糟糕......
答案 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-8
或Accept
标题中添加Content-Type
会导致CouchDB返回text/plain
内容而不是application/json
我期待着。如果情况足够相似,也许您可以通过改变标题来解决这个问题。