【发布时间】:2012-08-20 13:51:02
【问题描述】:
我有以下代码:
var params = {
cache:false,
dataType:"json",
type:"GET",
url: "/order.php",
error: function(data){
dump(data);
},
success: function (data){
alert('ok');
},
data:{
js:1
}
};
$.ajax(params);
因此,如果我运行 example.com,它会完美运行。 但是,如果我运行 www.example.com,我会通过函数 dump() 得到一个错误。 Google 控制台显示错误:
XMLHttpRequest 无法加载 =1345470451769">http://example.com/order.php?js=1&tariff=247&=1345470451769. 来源 http://www.example.com 不被 Access-Control-Allow-Origin 所允许
什么意思?
所以我不需要从 www.domain.com 到 domain.com 的任何永久重定向。
提前感谢您的帮助。
更新 1: 我添加了功能:
function getBaseUrl()
{
var baseUrl = '';
baseUrl += location.protocol + '//';
baseUrl += location.hostname;
return baseUrl;
}
在 url:getBaseUrl() + "/order.php" 上更改 url: "/order.php"
遇到同样的错误。 我在这里做错了吗?
更新 2: 我将这个添加到 htaccess 文件中:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin http://sample.com http://www.sample.com
</IfModule>
似乎我的主机不支持它,因为我仍然收到 www 错误。
【问题讨论】:
-
浏览器不允许页面对不同域中的 URL 进行 XHR(除非目标站点通过特殊标头明确允许它)。它被称为"Same Origin Policy"。
-
子域算作不同的域,即您遇到同源策略。
-
这是否意味着我应该调用 url:'htp://www.sample.com/order.php' 代替?
标签: javascript jquery ajax redirect