【问题标题】:jQuery ajax doesn't work on url without wwwjQuery ajax 在没有 www 的 url 上不起作用
【发布时间】:2023-04-05 07:23:01
【问题描述】:

如果url 没有www,下面的jQuery ajax 脚本在我的网站上不起作用。我检查了 Firebug,它没有发送 ajax 调用。

$.ajax(
    {
        type: "POST",
        url: "http://www.mysite.com/beta/products.php",
        data: "page_type=index&sort=relevancerank&CartId=<?php echo $CartId;?>&HMAC=<?php echo $HMAC;?>",
        success: function(msg)
        {
            $('#content-holder').html(msg);

        },
        error: function()
        {
            alert("An error occurred while updating. Try again in a while");
        }
    });

【问题讨论】:

    标签: javascript ajax url jquery


    【解决方案1】:

    我假设调用文档 URL 被引用为“mysite.com”或“subdomain.mysite.com”? XMLHttpRequest 对象(支持 jQuery Ajax 调用的引擎)不能执行“跨域”请求。子域(例如“www”)符合条件。确保您的请求是针对同一个子域的。

    【讨论】:

    • 完全正确!。实际上,当我在网址中使用 www 时,我的 ajax 调用有效。如果没有 www,它就无法工作。在查看@您的评论后,我检查了我的 ajax 调用,并用 www 给出了 url 参数。谢谢!
    • 如果您提供相对 URL,例如:“www.your-site.com/some/some/...”而不是“/some/some/...”当您调用“时,AJAX 不起作用your-site.com/some/some/...”,因为不执行“跨域”请求。在您的 AJAX 中使用相对 URL,并且可以在 WWW 上工作,而无需 WWW。
    【解决方案2】:

    您不需要提供绝对 URL,您只需提供一个 relative 即可,无论您的页面是否加载了 www. 子域,它都会起作用:

    //...
        type: "POST",
        url: "/beta/products.php",
    //...
    

    【讨论】:

    • 我同意你的看法。但在某些情况下,如果我们在标题页中携带这个 ajax 调用,当有 htaccess 重定向时,我们必须坚持使用绝对 url。
    【解决方案3】:

    您的服务器是否可能重定向到“www”域?这可能只是防止您的外部页面访问不同域的同源策略。

    【讨论】:

      【解决方案4】:

      万维网。只是一个命名约定 - ajax 将加载任何可以通过 dns 查找的地址,或者只要有服务器响应请求,它就会在 IP 地址上工作。

      但是 - 出于安全原因,您的页面位置和 ajax 请求需要在同一个域中。为了绕过这个限制,你需要使用一个叫做 JSONP 的东西

      【讨论】:

      • 我遇到了这个问题。如果我在没有“www”的情况下访问我的网站,则会出现同源策略问题。现在我必须解决这个问题,因为我所有的 ajax 类都是用绝对 url 完成的。
      猜你喜欢
      • 2016-01-21
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      相关资源
      最近更新 更多