【发布时间】:2023-03-08 07:18:01
【问题描述】:
返回一个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”不等于提供的原点。 Origin 'https://localhost:3000' 因此不允许访问。
这是预期的。但是这怎么能在我的浏览器和本地休息客户端上工作呢?我做错了什么?
谢谢!
【问题讨论】:
-
crossDomain: true,对 (a) JSONP 请求或 (b) 首先没有指向相同来源的请求没有影响。 -
因为他们不返回JSONP...你不能通过添加它来让网站返回JSONP,他们需要支持它。
-
contentType: 'application/json',— 您正在发出 GET 请求,因此没有请求正文来描述其内容类型。 -
能否请您检查一下错误信息,大概是怎么回事的答案就在那里?
-
使用
error: function(err) { console.log(err); },它会提示你出了什么问题。
标签: javascript jquery ajax rest cross-domain