【问题标题】:Chrome: GET request cancelled for CORS HTTPS requestChrome:CORS HTTPS 请求的 GET 请求已取消
【发布时间】:2014-08-22 08:52:18
【问题描述】:

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

$.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。不 请求中存在“Access-Control-Allow-Origin”标头 资源。来源“https://localhost.office.lucidpress.com”是 因此不允许访问。

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

为什么这不适用于 Chrome,有什么解决方法吗?

注意:我在 URL 中放置了空格以防止它们成为链接。

【问题讨论】:

    标签: ajax json google-chrome amazon-s3 cors


    【解决方案1】:

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

    或者,由于这是一个 https 请求,您的答案可能是 Why Chrome cancel CORS OPTION request

    【讨论】:

    • 看起来可能就是这样。 S3 正在为 OPTIONS 请求提供 403。
    猜你喜欢
    • 2016-07-11
    • 2018-03-25
    • 2012-07-19
    • 1970-01-01
    • 2012-07-07
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多