我已经读过设置document.domain = "example.com"
让我从子域访问父域。
相反的方法会相反吗?
假设我的主网站在 http://example.com 下运行。我想通过AJAX(GET和POST)访问的所有API函数都托管在 http:// api .example.com 上。
我是否可以从api.example.com
访问example.com
?
编辑:再次关注document.domain
,我认为这不会解决问题。调用 api .example.com 的结果不是必需的HTML,而是从API服务器上运行的PHP脚本输出。它可以是JSON,纯文本等,因此无法为此设置document.domain
(因为它不是iframe)。
答案 0 :(得分:7)
您需要在两页上设置document.domain
或者在服务器上设置CORS标头:
http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
CORS快速概述
Firefox 3.5和Safari 4实现了 CORS规范,使用 XMLHttpRequest作为“API容器” 发送和接收的 适当的标题代表 Web开发人员,因此允许 跨站请求。 IE8实现 使用CORS规范的一部分 XDomainRequest作为类似的“API 容器“用于CORS,使简单 跨站点GET和POST请求。 值得注意的是,这些浏览器发送了 ORIGIN标题,提供了 scheme(http://或https://)和 正在制作的网页的域名 跨站请求。服务开发者 必须确保他们发送 正确的回头,特别是 Access-Control-Allow-Origin标头 有问题的ORIGIN(或“*”代表 所有域,如果资源是 公共)。
CORS标准的工作原理是添加新的 允许服务器访问的HTTP标头 为准许来源提供资源 域。浏览器支持这些 标题并强制执行限制 他们建立。另外,对于HTTP 请求可能导致的方法 对用户数据的副作用(in 特别是对于其他HTTP方法 比GET,或用于POST的 某些MIME类型),规范 要求浏览器“预检” 请求,征求支持的方法 来自具有HTTP OPTIONS的服务器 请求标题,然后,在 来自服务器的“批准”,发送 与实际的实际请求 HTTP请求方法。服务器也可以 通知客户是否“凭据” (包括Cookie和HTTP 应发送认证数据) 有请求。