Chrome:CORS HTTPS 请求的 GET 请求已取消
Posted
技术标签:
【中文标题】Chrome:CORS HTTPS 请求的 GET 请求已取消【英文标题】:Chrome: GET request cancelled for CORS HTTPS request 【发布时间】: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://
XMLHttpRequest 无法加载 https://s3.amazonaws.com/
/ /document.json。不 请求中存在“Access-Control-Allow-Origin”标头 资源。来源“https://localhost.office.lucidpress.com”是 因此不允许访问。
使用 CURL 发出相同的请求确实具有以下标头:“Access-Control-Allow-Origin: *”。
为什么这不适用于 Chrome,有什么解决方法吗?
注意:我在 URL 中放置了空格以防止它们成为链接。
【问题讨论】:
【参考方案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。以上是关于Chrome:CORS HTTPS 请求的 GET 请求已取消的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 插件无法禁用 CORS 限制,或者我的请求有问题