在Safari和Chrome中允许跨域请求?服务器响应与命令行参数

CEG*_*GRD 5 safari ajax google-chrome cross-domain

我试图在Windows上使用Safari进行跨域请求.我的Safari版本是5.1.2.

这是一个经典问题.我在许多地方读过,只要服务器在响应中使用followin标头进行响应,Chrome和Safari就会允许跨域请求

Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)

我看过这篇文章. 如何在Safari中允许跨域请求? 还有很多其他的在stackoverflow网站上.

但是,他们都没有回答我的问题.

我在使用Chrome和Safari执行跨域AJAX请求时遇到问题,即使我从服务器发回必要的标头.

我终于使用"--disable-web-security"运行了Chrome.然后它奏效了.

我的问题:

1)我如何处理Safari?我是否使用类似的命令行参数?

2)更重要的是,我可以告诉我默认情况下Chrome和Safari是否允许跨域功能,只要服务器响应标头或者我必须确保

a)服务器以标头响应

b)使用适当的参数启动浏览器.

CEG*_*GRD 4

我发现了问题。阅读有关 CORS 的更多信息对html5rocks.com/en/tutorials/cors有所帮助。我意识到我的请求正在触发预检请求(选项),并且服务器未设置为正确处理这些请求。它引起预检请求的原因是因为我正在使用 JQuery 并且它在我的请求中添加了自定义标头。我修改了代码以防止添加此额外标头,并且我的请求不再需要预检请求。现在我不必禁用网络安全性并且它可以正常工作。

  • 你能具体说一下你是如何修改你的代码的吗?额外的标头是什么?我可能遇到同样的问题。 (2认同)
  • 它显然不是自定义 (X-*) 标头,而是 Content-Type 请求标头:“如果将此值设置为 application/x-www-form-urlencoded、multipart/form-data 或 text/plain 以外的任何值,您将触发预检请求。” 我可以说这一切看起来都很愚蠢——这种疯狂的理由在哪里? (2认同)