【发布时间】:2012-10-21 02:19:37
【问题描述】:
如果您访问位于 http://www.example.com/dir 的网站,那么对 http://example.com/dir/something.php 的任何 ajax 请求(缺少 www)都会导致以下消息显示在 google chrome 的控制台中:
XMLHttpRequest cannot load http://example.com/dir/something.php.
Origin http://www.example.com is not allowed by Access-Control-Allow-Origin.
这是怎么回事,可以做些什么来解决这个问题?
编辑:当您访问 www.example.com 时,example.com 设置的所有 cookie 似乎也会消失?
【问题讨论】:
-
政策坚持方案、主机名和端口号(如指定)完全相同。
-
@Pointy 那么我该如何解决这个问题呢?
-
您可以通过将所有页面放在同一个域中来修复它。
-
它们指向同一个域,但是如果有人在 url 前面手动键入 www,则会导致 ajax 请求不起作用。有没有办法使用 .htaccess 将所有内容从 www 重定向到没有 www 的情况,这会解决这个问题吗?
-
不,您不能在服务器端执行此操作,因为执行规则的是 浏览器。为什么您仍然允许将用户输入用作 XHR 上的 URL?我猜你可以使用 JavaScript 来确保任何此类 URL 都具有正确的域。
标签: javascript ajax security same-origin-policy