永远不会为JSONP请求调用成功回调

时间:2016-05-16 11:33:57

标签: javascript jquery ajax rest cross-domain

我有这个网址:https://cdn.static.wizzair.com/en-GB/TimeTableAjax?departureIATA=BUD&arrivalIATA=TLV&year=2016&month=6

给我一​​个json。如果我使用浏览器访问此URL或者如果我在浏览器(DHC)上使用REST客户端触发请求,则可以正常工作!现在,对于我使用运行在https上的快速服务器,我正在尝试使用jQuery使这个请求无效。

不知何故,错误回调总是被执行,即使我在网络调试中看到请求是好的并且看到了json响应!

我的代码:

/// removed old code ///

$.ajax({
                method: 'GET',
                url: "https://cdn.static.wizzair.com/en-GB/TimeTableAjax?departureIATA=BUD&arrivalIATA=TLV&year=2016&month=6&callback=?",
                dataType: "jsonp",
                success: function() { console.log("success"); },
                error: function(err) { ;console.log(err); }
            });

** *编辑* **

所以我理解这不起作用,因为目标不支持jsonp。

将其更改为正常GET请求将收到错误并显示以下消息:

  

XMLHttpRequest无法加载https://cdn.static.wizzair.com/en-GB/TimeTableAjax?departureIATA=BUD&arrivalIATA=TLV&year=2016&month=6。 “Access-Control-Allow-Origin”标头的值“https://wizzair.com”不等于提供的原点。因此,不允许原点“https://localhost:3000”访问。

这是预料之中的。但是,为什么我的浏览器和本地休息客户端有效呢?我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您请求的URL是返回JSON,而不是JSONP。

JSONP请求仅在服务器设计为使用JSONP格式的响应响应时才起作用。

如需进一步阅读,请参阅What is JSONP all about

关于问题的重要编辑:请参阅this duplicate