【问题标题】:I'm getting "Cross-Origin Request Blocked" with the same domain我在同一个域中收到“跨域请求被阻止”
【发布时间】: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.comexample.com 不同。
  • 我唯一看到这种情况是我忘记使用 localhost 并将其作为本地文件资源打开(即双击 index.html 文件)。
  • 我们对跨域请求的判断力并不比您的浏览器好。如果它说它是一个不同的域,它一个不同的域。重要的是:浏览此页面时浏览器显示的确切 URL 是什么(包括协议、子域和端口号)以及请求的确切 URL 是什么(包括协议、子域和端口号)。
  • 可能是 www 与非 www... 给我一分钟。
  • 本地文件资源具有与网址不同的限制(更严格)。以 localhost 的身份做所有事情,你会没事的。

标签: javascript ajax same-origin-policy


【解决方案1】:

正如 VoteyDisciple 所述,url 格式必须完全相同。在我的情况下,页面 url 有一个 www 前缀,但 ajax 调用 url 没有。这就是“跨域”。

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 2014-10-13
    • 2021-09-14
    • 2018-12-31
    • 2016-04-20
    • 2017-01-04
    • 2014-12-27
    相关资源
    最近更新 更多