【问题标题】:Making AJAX calls from subdomain to main domain with relative paths使用相对路径从子域到主域进行 AJAX 调用
【发布时间】:2012-02-27 23:41:25
【问题描述】:

我的结构如下:http://subdomain.mysite.com

从那里,我希望能够进行 AJAX 调用:http://mysite.com/releases/ajax/file.php

如果我像上面那样使用绝对 URL,JS 会给出一个错误,指出在线“权限错误”:

xmlhttp.open("POST",url,true);

有没有办法通过子域的相对路径到达那里?如果没有,我可能会重定向到使用mysite.com/subdomains

【问题讨论】:

    标签: javascript ajax relative-path


    【解决方案1】:

    这是因为同源政策。默认情况下,AJAX 请求不能跨越域边界,即使它是子域(即使是 mysite.com 和 www.mysite.com,或 https://mysite.comhttp://mysite.com)。您可以在此处了解有关此安全功能的更多信息:
    http://en.wikipedia.org/wiki/Same_origin_policy

    由于这种限制性限制对开发人员来说非常有问题,因此较新的浏览器支持称为 CORS(跨源资源共享)的策略框架,它允许您指定允许的主机进行通信。不幸的是,Internet Explorer 直到版本 8 才实现基本支持,所以如果您必须支持 IE6-7,它对您不起作用:
    http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

    大多数人在这种情况下会做的是使用 JSONP 代替,它利用了普通脚本标签不受同源策略绑定的事实,因此 JSON 响应被包装在函数调用中并执行由浏览器,允许回调访问该数据。有关 JSONP 的更多信息:
    http://en.wikipedia.org/wiki/JSONP

    JSONP 的一个显着限制是它只能用于对服务器的 GET 请求(不能用于 POST 或其他 HTTP 请求类型)。

    许多流行的 JavaScript 框架,例如 jQuery,都支持 JSONP 作为选项(大多数只是通过在创建 AJAX 请求时切换请求类型变量),但显然您还需要设置正在处理的服务器端脚本这些请求得到适当的响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多