从父域到子域的JavaScript访问



我读到设置document.domain = "example.com"允许我从子域访问父域。

同样的方法会反过来起作用吗?

假设我的主站点在下运行http://example.com。我想通过AJAX(GET&POST)访问的所有API函数都托管在http://API.example.com.上

我能从example.com访问api.example.com吗?

EDIT:再次查看document.domain,我认为这不会解决问题。调用api.example.com的结果不是必需的HTML,而是从api服务器上运行的PHP脚本输出的结果。它可以是JSON、纯文本等,因此无法为此设置document.domain(因为它不是iframe)。

您需要在两页上都设置document.domain

或者在服务器上设置CORS头:

http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/

CORS 快速概述

Firefox 3.5和Safari 4实现CORS规范,使用作为"API容器"的XMLHttpRequest发送和接收代表web开发人员,从而允许跨站点请求。IE8实现CORS规范的一部分,使用XDomainRequest作为类似的"API容器",实现简单跨站点GET和POST请求。值得注意的是,这些浏览器发送ORIGIN标头,它提供scheme(http://或https://)和生成的页面的域跨站点请求。服务器开发人员必须确保他们发送右侧头球攻门,尤其是的Access Control Allow Origin标头有问题的原产地(或所有域,如果资源公共)。

CORS标准通过添加新的允许服务器将资源提供给许可来源域。浏览器支持这些标头并强制执行限制他们建立了。此外,对于HTTP可能导致用户数据的副作用(在特别是对于其他HTTP方法而不是GET,或者用于POST使用某些MIME类型),规范要求浏览器"预飞行"请求,请求支持的方法从具有HTTP OPTIONS的服务器请求标头,然后来自服务器的"批准",发送实际请求与实际HTTP请求方法。服务器也可以通知客户端是否"凭据"(包括Cookie和HTTP身份验证数据)有请求。

相关内容

  • 没有找到相关文章

最新更新