4 回答
TA贡献1784条经验 获得超9个赞
据记载,据我所知,你有两个问题:
您没有将“jsonp”类型说明符传递给您
$.get
,因此它使用的是普通的XMLHttpRequest。但是,如果服务器对其进行了确认,则您的浏览器支持CORS(跨源资源共享)以允许跨域XMLHttpRequest。这就是Access-Control-Allow-Origin
标头进来的地方。我相信你提到你是从file:// URL运行的。CORS头有两种方式表示跨域XHR是正常的。一个是发送
Access-Control-Allow-Origin: *
(如果你通过Flickr$.get
,它们必须一直在做),而另一个是回显Origin
标题的内容。但是,file://
URL产生的nullOrigin
不能通过echo-back授权。
第一个问题是达林建议使用的迂回解决方案$.getJSON
。如果它看到callback=?
URL中的子字符串,将请求类型从其默认的“json”更改为“jsonp”会有点神奇。
通过不再尝试从file://
URL 执行CORS请求,解决了第二个问题。
为了向其他人澄清,以下是简单的故障排除说明:
如果您尝试使用JSONP,请确保满足以下条件之一:
你正在使用
$.get
并设置dataType
为jsonp
。您正在使用
$.getJSON
并包含callback=?
在URL中。如果您正在尝试通过CORS进行跨域XMLHttpRequest ...
确保你正在通过测试
http://
。运行的脚本file://
对CORS的支持有限。确保浏览器实际支持CORS。(Opera和Internet Explorer迟到了)
添加回答
举报