Pat*_*ick 48 javascript safari xmlhttprequest cors
我正在提出CORS xhr请求.这在chrome中运行良好,但是当我在safari中运行时,我得到一个'无法加载---- Access-control-allow-origin不允许访问'.代码完全相同,我在服务器上设置了CORS.下面是我的代码.(有访问控制,但你可以免费试用没有accessToken)
var water;
var req = new XMLHttpRequest;
req.overrideMimeType("application/json");
req.open('GET', 'https://storage.googleapis.com/fflog/135172watersupplies_json', true);
req.setRequestHeader('Authorization', 'Bearer ' + accessToken);
origThis = this;
var target = this;
req.onload = function() {
water = req;
req.send(null);
Run Code Online (Sandbox Code Playgroud)
查看请求标头后,我看到首先发出OPTIONS请求,这是不允许的请求.原始标头不包含在Safari中的响应中,但是在chrome中.什么会导致这种情况.任何帮助将不胜感激.
更新:我已经尝试在Safari for Windows中运行,所以我不确定这里发生了什么.我使用的mac是远程访问(Macincloud.com),但我不认为这与它有任何关系.
Set*_*eth 45
在针对Amazon S3中的文件发出XHR请求时遇到了同样的错误.在Safari 7上它失败了.我知道你没有使用亚马逊S3,但我想我会发布以防这个解决方案帮助其他人.
问题是Safari 7将Access-Control-Request-Headers标头设置为"origin,x-requested-with",但我的AWS CORS配置只允许"x-requested-with":
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
<AllowedHeader>x-requested-with</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
我添加了"origin"作为允许的标题,一切正常.
<AllowedHeader>origin</AllowedHeader>
Run Code Online (Sandbox Code Playgroud)
注意:AllowedOrigin *
仅用于开发目的.有关详细信息,请参阅下面的@andes评论.
我只是有一个类似的问题,CORS错误。它可以在Firefox和Chrome中运行,但不能在Safari 10中运行。
原来,我们需要在JSON URL上加上斜杠。
Pat*_*ick -5
感谢所有的回复,我终于自己得到了这个。我将“Origin”添加到我的responseHeaders 中,现在工作正常。
归档时间: |
|
查看次数: |
62193 次 |
最近记录: |