我有一个跨域$ .ajax调用设置,如
$.ajax({
url : 'http://example.com/somepage',
type : 'get',
crossDomain : true,
xhrFields : { withCredentials: true },
success : function(data) {
// do something with data
}
});
和vhost conf上的服务器端
SetEnvIfNoCase ORIGIN (.*) ORIGIN=$1
Header set Access-Control-Allow-Origin "%{ORIGIN}e"
Header set Access-Control-Allow-Methods "post, get, put, options, patch, delete"
Header set Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header set Access-Control-Max-Age "60"
Header set Access-Control-Allow-Credentials true
除非我的http://example.com/somepage使用302代码重定向到另一个页面http://example.com/someotherpage,否则此工作正常,在这种情况下,即ff,chrome&歌剧正在发挥作用将数据从重定向返回到页面,但不是safari我可以看到重定向(safari控制台),但重定向后的第二次调用被中止。
任何想法?
答案 0 :(得分:1)
这应该是评论,但我无法发表评论。我希望这会对你有所帮助。
前一段时间,由于Safari中使用CORS,我们遇到了一些重定向问题。
Safari会中止请求,因为它之前会执行转发前请求,但配置可能不合适。
我会尝试以下(它对我们有用):
supportedHeaders: 的 pageSuccess,pageError,pageLogin,起源,接受语言,接受编码强>
supportedMethods: GET,POST,HEAD,PUT,DELETE,OPTIONS
exposedHeaders: pageSuccess,pageError,pageLogin
还允许子域名,支持的凭据并允许通用http请求设置为 true 。
我们在标题中公开了一些其他信息,给出了true / false的值(请参阅exposedHeaders和supportedHeaders),就像ErrorPage或SuccesPage一样,当响应中出现这些信息时,我们使用 jqXHR.getResponseHeader('erroPage')获取它们以执行重定向。
在这里您可以找到几个有用的链接:
问候。
聚苯乙烯。您的配置似乎与我们的几乎相同。 supportedHeaders只有差异(当然还有专门为我们的情况添加的exposedHeaders)