3 回答
TA贡献1900条经验 获得超5个赞
dataType:'jsonp',
您正在发出JSONP请求,但服务器正在使用JSON进行响应。
浏览器拒绝尝试将JSON视为JSONP,因为这会带来安全风险。(如果浏览器确实试图将JSON视为JSONP,那么它最多会失败)。
有关JSONP的更多详细信息,请参阅此问题。请注意,在CORS可用之前使用的同源策略是一个讨厌的黑客。CORS是一个更清洁,更安全,更强大的解决方案。
看起来你正试图制作一个跨原始的请求,并在一大堆相互矛盾的指令中抛出你能想到的一切。
您需要了解同源策略的工作原理。
有关详细指南,请参阅此问题。
现在关于你的代码的一些注释:
contentType: 'application/json',
使用JSONP时会忽略此项
您正在提出GET请求。没有请求体来描述其类型。
这将使跨域请求变得非简单,这意味着除了基本的CORS权限之外,您还需要处理飞行前的问题。
删除它。
dataType:'jsonp',
服务器没有响应JSONP。
删除它。(您可以使服务器使用JSONP进行响应,但CORS更好)。
responseType:'application/json',
这不是jQuery.ajax支持的选项。删除它。
xhrFields:{withCredentials:false},
这是默认值。除非您使用ajaxSetup将其设置为true,否则请将其删除。
headers: {
'Access-Control-Allow-Credentials' : true,
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods':'GET',
'Access-Control-Allow-Headers':'application/json',
},
这些是响应标头。它们属于响应,而不是请求。
这将使跨域请求变得非简单,这意味着除了基本的CORS权限之外,您还需要处理飞行前的问题。
添加回答
举报