【问题标题】:What are some things to consider when letting other sites use scripts directly from your site?让其他网站直接使用您网站上的脚本时需要考虑哪些事项?
【发布时间】:2010-09-22 05:06:22
【问题描述】:

我有一个 jQuery 函数,它在页面中运行,找到指向某个域的链接,执行 ajax 调用以获取一些数据,并在访问者将鼠标悬停在链接上时制作工具提示。就像wowhead.com/tooltips

在允许其他网站包含您的脚本文件(直接从您的网站链接)时需要考虑哪些事项?像这样:

  • 安全性?
  • 性能?
  • 造型?
  • ... ?

【问题讨论】:

    标签: jquery performance security coding-style jsonp


    【解决方案1】:

    如果其他网站将脚本标签指向您网站上托管的 JavaScript,则不会对您造成太大的安全风险。安全风险全部由其他网站承担,他们必须相信不会用会话窃取 cookie 嗅探器等替换你的 JavaScript。我想如果你的服务变得非常流行,你的网站可能会成为对恶棍来说更有吸引力的攻击目标,因此他们可以通过更改您服务器上的 JS 对其他网站进行类似的攻击。

    为了性能,请确保使用far-future expires 标头尽可能多地缓存您的脚本。您还想缩小它以降低带宽成本。也许使用针对静态内容(nginx 等)优化的服务器,而不是您可能用于同一域上的动态内容的完整 Apache 实例。如果您希望有很多个网站热链接您的脚本,也可以考虑将 JS 托管在 CDN 上。

    样式化 可能非常棘手,因为您无法控制应用于您的脚本插入到第三方网站的 DOM 中的元素的样式。也许工具提示可能是一个 iframe,它在您的网站上呈现一个工具提示大小的小页面,然后您将控制一切。为您提供更多带宽,并且您的工具提示必须是方形的。

    【讨论】:

    • 很好的答案,非常感谢。如果大部分样式是由脚本生成的内联 CSS 怎么办?脚本的数据只是一个轻量级的 jsonp 调用。服务器上构建数据以发送到脚本的操作在滑动超时时被缓存。我在共享主机上,所以没有无 cookie 的静态域 - 除非有办法在 discountasp.net 服务器上做到这一点?很快就会处理缓存脚本和样式表。
    • @Chad Inline CSS 会遇到与使用外部样式表相同的困难,即从第 3 方站点自己的样式表继承样式。我认为内联不会有帮助。您可能能够执行诸如 CSS 重置之类的操作,将其应用于您正在添加的 DOM 片段的根元素的所有后代? #someveryuniqueidforyourrootelement * { /* reset rules */ }
    猜你喜欢
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2011-09-03
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多