0

有时当我提交 ajax 请求时,我会收到此错误

XMLHttpRequest cannot load http://www.mysite.com/go/submit. Origin http://mysite.com is not allowed by Access-Control-Allow-Origin.

以下是我想到的解决方案:

* Add the allow origin rule everywhere?
* Write .htaccess to always redirect to full url
* Use this method http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

我应该如何解决这个问题?

4

1 回答 1

2

同源策略意味着您无法分析来自另一个“源”(域、端口)的数据(json、html、图像等)。

注意

术语“来源”是使用运行脚本的 HTML 文档的域名、应用层协议和(在大多数浏览器中)端口号来定义的

一种解决方案是在提供其他数据的服务器上设置显式允许访问的CORS 标头:

Access-Control-Allow-Origin: *

因此,您必须控制为您嵌入的数据提供服务的服务器,而不仅仅是显示它们。

一个有点间接的解决方案是让浏览器认为只有一个来源,方法是在您的服务器上放置一个代理。在 apache 上,您不需要 .htaccess 但mod_proxy. 如果您想安装这样的代理,您可能会对这个 SO 问题感兴趣(事实上,您可能会对帮助我在我的一台服务器上设置这样的代理的答案更感兴趣)。

如果您唯一的问题是人们输入 mysite.com 而不是 www.mysite.com 并且您只有一台服务器,您可以简单地使用 .htaccess 来重写 URL:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
于 2012-10-15T18:34:29.473 回答