在没有服务器端脚本的JavaScript中解决相同的起始策略

前端之家收集整理的这篇文章主要介绍了在没有服务器端脚本的JavaScript中解决相同的起始策略前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个不允许服务器端脚本真正的环境(在服务器上安装脚本是非常困难的).我尝试使用一个iframe来违反 javascript的相同起因;然而,这没有奏效.有没有其他的解决方法我不知道?

谢谢!

解决方法

正如 David Dorward所述,JSON-P是最简单和最快的;但是,另外还有一个技巧,特别是使用两个iframe.

两个在不使用JSONP的情况下解决这个问题,您可以执行以下操作.这种技术假设您对父页面有某种开发权限.

两个域/站点上有三页.

>父页面
>内容页面
>跨域通讯页面(又名“xdcomm”)

页面和xdcomm页面页面托管在同一个域上,内容页面托管在任何其他域上.内容页面作为iframe嵌入到父页面中,xdcomm页面作为隐藏的iframe嵌入在内容页面中.

xdcomm页面包含一个非常简单的脚本,用于检测查询字符串中的GET参数,解析方法和args变量(其中args是JSON编码字符串)的字符串,然后在父页面中使用指定的参数执行指定的方法.一个例子可以是seen here(查看源).

即使JavaScript的“同源”策略限制了一个域上的代码访问另一个域的代码,如果域彼此嵌套(域A,嵌套在域B内,嵌套在域A内)也不重要.

因此,简而言之,内容页面通过xdcomm页面将消息发送到父页面,通过将iframe的来源更改为http://domaina.com/xdcomm.html?src=foo\u0026amp;args=[1,2,3,4].这将等同于在父页面中执行foo(1,4).

此外,知道已经有图书馆帮助您,例如easyxdm.我在这里解释的是他们使用的一种技术的基础,虽然它可能不是那么好,但它肯定是一个完整的功能和轻量级实现.

猜你在找的JavaScript相关文章