Chrome: GET请求取消CORS HTTPS请求



我正在尝试使用以下代码从S3下载JSON文件的AJAX请求:

$.ajax({
    'type':'GET',
    'url':this.baseUrl + publicationId + "/document.json",
    'crossDomain': true,
    'dataType':'json',
    'success':function(data) {
        console.log('got document.json');
    }
});

这在Firefox中工作得很好,如果baseUrl是http://,它可以工作,但如果它是https://,,那么Chrome会取消请求,错误:

XMLHttpRequest无法加载https://s3.amazonaws.com//document.json。没有"访问-控制-允许-起源"标头出现在请求上资源。来源"https://localhost.office.lucidpress.com"是因此不允许访问。

使用CURL发出相同的请求确实有以下头:"Access-Control-Allow-Origin: *"。

为什么这在Chrome上不起作用,有什么解决办法吗?

注意:我在url中添加了空格,以防止它们成为链接

Chrome将发送一个飞行前选项请求,看看是否可以执行GET。如果你是curl -X OPTIONS -i https://s3.amazonaws.com/<bucket-name>/<pub-id>/document.json,你会收到什么头?你很可能需要添加Access-Control-Allow-Headers到你的服务器响应,也允许任何额外的标题Chrome可能发送的选项请求,即Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept

或者,因为这是一个https请求,你的答案可能是为什么Chrome取消CORS选项请求

最新更新