从父域到子域的JavaScript访问?

Mar*_*ark 16 javascript cross-domain cross-domain-policy

我读过这个设置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).

mpl*_*jan 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作为CORS 的类似"API容器",实现简单的跨站点GET和POST请求.值得注意的是,这些浏览器发送ORIGIN标头,该标头提供方案(http://或https://)以及发出跨站点请求的页面域.服务器开发人员必须确保他们发回正确的标头,特别是有问题的ORIGIN的Access-Control-Allow-Origin标头(如果资源是公共的,则为所有域的"*").

CORS标准的工作原理是添加新的HTTP标头,允许服务器将资源提供给允许的源域.浏览器支持这些标头并强制执行它们建立的限制.此外,对于可能对用户数据造成副作用的HTTP请求方法(特别是对于GET以外的HTTP方法,或对某些MIME类型的POST使用),规范要求浏览器"预检"请求,请求支持的方法从具有HTTP OPTIONS请求标头的服务器,然后,在服务器"批准"时,使用实际的HTTP请求方法发送实际请求.服务器还可以通知客户端是否应随请求一起发送"凭据"(包括Cookie和HTTP身份验证数据).