分发Javascript客户端代码的推荐方法是什么?

时间:2014-03-22 21:18:59

标签: javascript iframe cors

我正在编写其他域的代码来访问我的服务器。我正在考虑两种选择:

1)使用CORS并允许客户端页面嵌入JS代码,能够调用函数并将代码集成到其页面中(例如向其按钮添加操作 - 但这不仅仅是一个要求,因为我的代码可能带有自己的UI)。

例如,Discus通用代码:

http://disqus.com/admin/universalcode/

<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = ''; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>

2)使用简单的iFrame代码,以便客户端页面也可以嵌入它,但保持域的分离。

从客户端的开发人员的角度来看,您更喜欢什么?你会担心JS + CORS的任何安全问题吗?

修改

可能重复

JSONP vs IFrame?

但是关于安全性和开发人员友好选项的问题仍然存在。

1 个答案:

答案 0 :(得分:1)

在我看来,如果由于某种原因您的用户需要动态地与您的代码交互,那么将代码作为iframe分发并公开postMessage API会更加清晰。这或多或少都是Facebook所做的,除非他们让你在postmessage层附带一个js包装器来帮助那些不熟悉postmessage的开发人员。

作为一名使用别人图书馆的开发人员,这让我感觉更安全,因为我实际上没有提取您的代码并让它访问我的应用程序数据,而是我能够依赖浏览器来沙箱你的iframe,并保持我的用户数据私密,同时保持你的代码和数据私密。

iframe具有出色的安全性沙盒,并且创建了postmessage以允许两个具有不同域的页面之间的安全接口,其简单且有效。