【发布时间】:2015-02-04 15:23:42
【问题描述】:
好吧,我的 JavaScript 调用了作为网站一部分的 url,所以我不知道为什么这是“跨域”。
我的 AJAX 调用:
$.ajax({
url: SITE_URL+'ajax_check.php?p='+P_ID,
//let's say SITE_URL is http://example.com/dev
success:function(result){
alert(result);
}
});
这是我在 firebug 中遇到的错误:
“跨域请求被阻止:同源策略不允许读取位于http://example.com/dev/ajax_check.php?p=23 的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。”
【问题讨论】:
-
定义“基本上是网站的一部分”。要么是,要么不是。我的猜测是它不是,当前页面或目标页面位于不同的端口或协议。 example.com 与 example.com 不同。
-
我唯一看到这种情况是我忘记使用 localhost 并将其作为本地文件资源打开(即双击 index.html 文件)。
-
我们对跨域请求的判断力并不比您的浏览器好。如果它说它是一个不同的域,它是一个不同的域。重要的是:浏览此页面时浏览器显示的确切 URL 是什么(包括协议、子域和端口号)以及请求的确切 URL 是什么(包括协议、子域和端口号)。
-
可能是 www 与非 www... 给我一分钟。
-
本地文件资源具有与网址不同的限制(更严格)。以 localhost 的身份做所有事情,你会没事的。
标签: javascript ajax same-origin-policy