【问题标题】:Where to host javascript Closed Source front-end library for distribution? [closed]在哪里托管用于分发的 javascript 闭源前端库? [关闭]
【发布时间】:2018-12-01 17:19:13
【问题描述】:

我有一个 JavaScript 库,我想分发给客户,以便通过他们网站上的脚本标签使用。

我的项目不是开源的,所以我不能使用像 jsDelivr 这样的开源服务。

我正在考虑使用 Firebase(我希望他们有良好的 CDN)托管,我将在其中上传我的脚本,然后其他网站将直接访问该脚本。这是一个可行的解决方案,还是有针对这个用例的其他/更好的服务?

【问题讨论】:

    标签: javascript firebase hosting web-hosting firebase-hosting


    【解决方案1】:

    Firebase 托管对已部署的文件没有访问控制。这意味着,就像在任何公共 CDN 上一样,任何知道文件 URL 的人都可以访问它。

    如果您不想公开共享代码,您可能不应该将文件放在任何 CDN 上。将代码直接分发给您的客户将是最合乎逻辑的选择。然后,他们会将代码直接包含到他们的构建过程中,而不是从 CDN 中实时提取。

    但是如果你想从 CDN 中提取它,你能做的最好的就是使用一个不可猜测的 URL。通常是很长很随机的东西,比如http://mycdn.com/path/to/file/unguessableFDJIQRE(@#(U/index.js。这确保了随机用户不太可能找到该文件,并且只有知道它是否存在的用户才能获得它。也就是说,任何知道文件 URL 的人都可以访问它。

    【讨论】:

    • 在客户端网站中包含此代码应该尽可能简单,所以我想唯一的方法是使用带有 src 属性的脚本标签。但是,当任何人都可以在客户端源中看到该链接时,是否还需要对 URL 进行混淆处理?
    • 我不清楚最终产品的用户是谁。如果该库的目标是在公共网站中使用,并且您希望那些从 CDN 使用它,那么 while 方法似乎确实是一种浪费能源,您可能最好像 @eldar 的回答建议的那样混淆代码。
    【解决方案2】:

    这里有一些策略:

    1. 丑化/最小化你的 JS 脚本。用户仍然可以阅读它,但这会很困难,因为所有变量名都将被替换为人类不可读的名称。也就是说,对丑陋的脚本进行逆向工程是绝对可能的。

    2. 使用 JS 混淆器,它会更进一步,将您的代码重写为几乎无法辨认。

    3. 设置需要身份验证令牌来提供脚本的静态 Web 服务器。除非您的客户通过有效的身份验证标头,否则他们将获得 404。

    【讨论】:

    • 本来打算丑化代码的,但没想到用混淆器,这点不错。但是通用网站托管(如 Firebase)是否适合托管这样的脚本?还是我应该使用一些不同的服务?
    • 我没有太多使用 Firebase 的经验,但可能吗?任何允许您公开托管和提供静态文件的服务都可以使用。您期望什么样的流量负载?如果您需要每分钟提供 100 多个或更多此脚本的副本,我会使用 CDN 或类似的东西。 AWS S3 非常便宜,既可以处理静态文件托管,又可以像 CDN 一样工作。
    猜你喜欢
    • 2019-12-28
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2014-10-05
    • 2012-09-10
    • 2021-12-06
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多