从外部脚本访问外部脚本的位置对象

时间:2010-06-04 19:58:50

标签: javascript cross-domain xss

这是一个有趣的JS q ...假设你有:

host1.com上的

host1.html引用了host2.com上的外部javascript(host2.js)。在host2.js中,我想获取为host2.js提供服务的主机的location.hostname,但是因为在host1.html中调用了host2.js,它会返回host1的location.hostname。

有没有办法在外部脚本中调用外部脚本的位置对象?

1 个答案:

答案 0 :(得分:1)

我认为之前已经提出了类似的问题,答案总是不行,这是不可能做到的。

解决方法:

  • 完成父文档的script元素,并使用计数器变量找出我们所在的元素(呃)

  • 将当前网址输出到服务器端的附带脚本,例如用PHP:script_current_url = <?php echo "http://".$_SERVER["HTTP_HOST"]."/".$_SERVER["REQUEST_URI"](协议部分也有变量,我只是忘了名字)

  • 在每个<script>标记之前设置变量:

     <script type="text/javascript">
     script_current_url = "http://www.example.com/include.js";
     </script>
    
     <script type="text/javascript" src="http://www.example.com/include.js">
     </script>
    

    这很麻烦,但可以通过构建包含文件的JS函数并自动设置正确的变量来简化。

我最喜欢服务器端方法,但根据您的平台,它还有其他含义,例如必须通过资源昂贵的解释器发送所有.js资源。