javascript - 从第三方网站的 script/include 标签配置 Javascript 的最佳方法是什么?

标签 javascript ruby dynamic sinatra

tl;博士: 使用动态 View 引擎(例如 Sinatra+ERB)动态生成带有自定义内容的 JavaScript 文件以嵌入第三方网站是否安全/明智?

具体来说,使用服务器端 View 引擎将这些数据作为变量嵌入到 JavaScript 页面上是否安全/明智?

全文:

我有一个 javascript/Sinatra 应用程序,其功能有点像 Google Analytics,合作伙伴网站包含我们的 javascript 文件,并且 JS 代码将数据发送到我们的 Sinatra 应用程序。

我想让我们的客户能够轻松配置此 javascript 包含内容,因为他们需要与我们的 javascript 代码通信的状态数据(例如他们的客户 ID 和当前登录的用户 ID)。但是,它们需要通信的数据必须通过我们的服务器端数据库进行转换,然后我们的脚本才能使用它。

我当前的方法感觉有点老套:Sinatra 将动态 javascript 文件作为“ View ”。客户端包含带有脚本标记的文件,例如:

<script src="/dynamic-js/include.js?client_key=xyz&user_key=abc">

在 Sinatra 方面,它获取这些参数,使用数据库将它们转换为内部值,然后提供一个动态 (erb) javascript 文件,其代码如下:

window.ourInternalVars = {};
window.ourInternalVars.client_int_key="<%=client_int_key%>";
window.ourInternalVars.user_int_key="<%=user_int_key%>";

我的问题是这是否是一个“糟糕”的解决方案(可能会产生不良和/或意外结果)和/或是否有“更好”的方法(广泛使用的方法、使用现有库的方法或以下社区/行业最佳实践)来解决这个问题?

我显然可以使用静态 javascript 文件来解决这个问题,该文件读取自己的 URL 参数并进行 ajax 调用来配置自身,但速度较慢(脚本开始时数据不存在),因此对于我们的目的(也不太可靠)。

我们还可以要求我们的客户对我们的服务器进行 ajax/api 调用来进行转换,但这使得我们的脚本的安装对他们来说更加复杂,我们希望对他们来说尽可能简单(a如果可能的话,一行脚本标签)。

我以后可能会对上述策略感到后悔吗?或者这看起来是管理 JavaScript 动态第三方输入/配置的合理方法吗?

另请注意,我简化了上面的用例以使问题更加清晰。

最佳答案

如果您 properly escape 值,对我来说看起来不错。

也许 Code Review 的人有更多提示。堆栈溢出是在您的代码无法按预期工作时出现的。

关于javascript - 从第三方网站的 script/include 标签配置 Javascript 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247384/

相关文章:

javascript - 是否可以通过 <b> 标签分割字符串?

javascript - 注册按钮 HTML CSS JavaScript

ruby - Rails acts_as_paranoid 和 has_many :through

ruby - SimpleDB 与 Tokyo Cabinet

javascript - 动态加载 javascript 文件时延迟函数调用

javascript - 通过 prop 自定义组件中的动态文本

函数内的 JavaScript 函数——对参数感到困惑

javascript - 使用 JavaScript 更改行表颜色

Ruby自编源码

jQuery - 按顺序动态链接元素..?