从父域到子域的JavaScript访问?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (22)

我读过该设置document.domain = "example.com"可以让我从子域访问父域。

相同的方式会以相反的方式工作吗?

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

我将能够访问api.example.com来自example.com

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规范,使用 XMLHttpRequest作为“API容器”,代表Web开发人员发送和接收适当的标题,从而允许跨站点请求。IE8实现CORS规范的一部分,使用XDomainRequest作为CORS 的类似“API容器”,实现简单的跨站点GET和POST请求。值得注意的是,这些浏览器发送了ORIGIN头,它提供了方案(http://或https://)和发出跨站请求的页面的域。服务器开发人员必须确保他们发回正确的头文件,尤其是ORIGIN有问题的Access-Control-Allow-Origin标头(如果资源是公共的,则为所有域的“*”)。 CORS标准通过添加新的HTTP标头起作用,允许服务器为允许的原始域提供资源。浏览器支持这些标题并强制它们建立的限制。此外,对于可能导致用户数据产生副作用的HTTP请求方法(特别是对于GET以外的HTTP方法,或对于某些MIME类型的POST方式),规范要求浏览器“预检”请求,请求支持的方法从服务器获取HTTP OPTIONS请求头,然后,在服务器“批准”时,使用实际的HTTP请求方法发送实际请求。服务器还可以通知客户端“凭证”(包括Cookie和HTTP认证数据)是否应该随请求一起发送。

扫码关注云+社区