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

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

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

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

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

    P.S. 补充几点:

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

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

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

    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自 芸路拾光, 原文地址《【Javascript】利用document.domain解决子域跨域访问问题
    标签:
    分享:

已经有2 条评论抢在你前面了~

  1. 沙发
    洋洋 2012年1月14日 下午11:57

    比较高难度的了。。

  2. 板凳
    呱呱歌舞汇 2012年1月8日 下午9:55

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