2012-03-15 64 views
1

我对whateveryouwant.com上的一个小部件有一些javascript代码,它向我的mymaindomain.com做了一堆jsonp请求。小部件的每个实例都有自己的appid,因此每个appid都有一个且只有一个与之关联的受信任域名。现在我想知道我的小部件(appid)的单个资金是否正在从他的受信任域中使用,并且如果为true,则允许访问我的服务(例如返回访问令牌),并阻止任何其他不受信任的域。我读了一些关于iframe和postmessage的内容,但我不明白这是否可以成为交叉浏览器解决方案。Javascript小部件跨域认证

回答

1

如果我明白你想要什么,这听起来像你需要与同一网站上不同域上的两个小部件进行通信。如果是这样的话,周围有跨域问题两种方式,如果你想避免任何服务器端架构或浏览器插件:

  1. HTML 5的PostMessage的API,但是这一点,据我知道,在IE中仍然不受支持。如果您有兴趣,请在此处查看:https://developer.mozilla.org/en/DOM/window.postMessage

  2. 使用旧技巧,您基本上在iframe中设置数据并在两个不同服务器之间导航框架,以便每个小组件都可以一次访问它。这里是一个准系统例如:http://onlineaspect.com/uploads/postmessage/parent.html

+0

,我怎么都可以,比方说,99%肯定没有人能如果不能访问该服务的信任域列表。我应该通过iframe做出所有请求吗? – razorxan 2012-03-15 18:14:39

+0

也许我误解了你想要完成的事情。你不断提及服务;这个服务是存在于服务器端还是客户端(像另一个小部件)?我提到的是在同一网页上通过不同的域名进行客户端到客户端的通信。 – Kris 2012-03-15 19:16:18

+0

在我提到的问题中,这个脚本会执行一些jsonp请求,所以你可以想象这个小部件是一个服务器端API类服务的javascript客户端。 – razorxan 2012-03-15 19:41:33