Par*_*ris 10 javascript cross-domain same-origin-policy
我有一个不允许服务器端脚本编写的环境(在服务器上"安装"脚本非常困难).我尝试使用iframe来违反javascript的同源起源; 然而,这不起作用.还有其他我不知道的变通方法吗?
谢谢!
Jus*_*son 28
正如David Dorward所说,JSON-P是最简单,最快速的; 然而,还有另一个技巧,特别是使用两个iframe.
两个不使用JSONP解决此问题,您可以执行以下操作.此技术假定您对父页面具有某种开发访问权限.
两个域/站点上有三个页面.
父页面和xdcomm页面托管在同一域中的页面,内容页面托管在任何其他域上.内容页面作为iframe嵌入到父页面中,xdcomm页面作为隐藏的iframe嵌入到内容页面中.

xdcomm页面包含一个非常简单的脚本,它检测查询字符串中的GET参数,解析该字符串for method和argsvariables(其中args是JSON编码的字符串),然后在父页面中使用指定的参数执行指定的方法.这里可以看到一个例子(查看源代码).
尽管JavaScript的同源策略限制一个域上的代码访问另一个域的代码,但域是否相互嵌套并不重要(域A,嵌套在域B中,嵌套在域A中).
因此,简而言之,内容页面通过将iframe的来源更改为类似的内容,通过xdcomm页面将消息发送到父页面http://domaina.com/xdcomm.html?src=foo&args=[1,2,3,4].这相当于foo(1,2,3,4)在父页面中执行.
另外,要知道已经存在可以帮助您解决此问题的库,例如easyxdm.我在这里解释的是他们使用的技术之一的基础,虽然它可能不那么花哨,但它肯定是一个功能齐全且轻量级的实现.
| 归档时间: |
|
| 查看次数: |
19167 次 |
| 最近记录: |