首页 > 网页设计 > 【Javascript】利用document.domain解决子域跨域访问问题

【Javascript】利用document.domain解决子域跨域访问问题

2012年1月8日 发表评论 阅读评论

根据浏览器安全策略,不同域名(比如witmax.cn和www.witmax.cn)、不同协议(比如http://witmax.cn和https://witmax.cn)、不同端口(比如http://witmax.cn和http://witmax.cn:8088)之间的页面不能相互访问,包括XMLHTTPRequest方式和Javascript的页面访问。

有一个例外是:在相同根域、相同协议、相同端口的情况下,可以利用设置document.domain方式来解决不同子域的跨站访问问题。

举个例子,想在witmax.cn中,访问www.witmax.cn域名下的内容,需要以下几步来完成:

  1. 在主页面(位于witmax.cn中)通过隐藏的iframe嵌套子页面(内容位于www.witmax.cn)
  2. 在主页面中设置document.domain=”witmax.cn”;
  3. 在子页面中设置document.domain=”witmax.cn”;
  4. 在主页面和子页面中可以相互访问内容了;需要跨域访问其他内容,可以通过在对应页面上发请求完成取回数据然后进行对应操作

P.S. 补充几点:

1、document.domain可以由子域www.witmax.cn修改为主域witmax.cn,而不能由witmax.cn修改为www.witmax.cn(不是所有浏览器都支持)。

2、不同根域、或不同协议、或不同端口之间的跨域访问只能通过服务器断的代理程序来解决了。

3、详细的示例见参考文档:


枫芸志原创文章,转载请注明来源并保留原文链接

本文链接:http://witmax.cn/js-cross-subdomain.html


分类: 网页设计 标签: 395次阅读
  1. 2012年1月8日21:55 | #1

    不同域名之间的跨域还是很难解决吧。

    [回复]

  2. 2012年1月14日23:57 | #2

    比较高难度的了。。

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。