带有跨域重定向的 Safari xhr (AJAX) 请求失败
Posted
技术标签:
【中文标题】带有跨域重定向的 Safari xhr (AJAX) 请求失败【英文标题】:Safari xhr (AJAX) requests w/ cross-domain redirect fails 【发布时间】:2016-01-07 18:11:42 【问题描述】:如何重现问题
-
使用 Safari 向服务器发出 AJAX 请求
让服务器以 302 响应到不同的域
如果这些条件中的任何一个不满足,它就会起作用。
-
使用其他浏览器,它可以工作。
让服务器重定向到同一个域,它可以工作。
.
Load: function (in_url, in_cb, in_responseType)
var xhr = new XMLHttpRequest();
xhr.open('GET', in_url, true);
xhr.onload = function ()
if (xhr.status === 200)
in_cb(null, xhr.response);
else
in_cb(new Error('[Loader] Could not fetch from: '+in_url+', status: '+xhr.status));
;
xhr.onerror = function (error)
in_cb(error);
;
xhr.send();
【问题讨论】:
这是 Safari 的一个已知问题。从最近bugs.webkit.org/show_bug.cgi?id=112471 开始,它似乎实际上正在开发中。 但请确保您的服务器支持 CORS 【参考方案1】:此bug 已修复。 Safari 10.1 (WebKit 603.1.30) 是第一个不受影响的版本。
【讨论】:
谢谢!不幸的是,我很久以前就问过我不再有代码可以测试了。如果有人可以确认它已修复,我会将您的回复标记为正确以上是关于带有跨域重定向的 Safari xhr (AJAX) 请求失败的主要内容,如果未能解决你的问题,请参考以下文章
Google OAuth2:重定向已被 CORS 政策阻止:请求需要预检,不允许遵循跨域重定向