【问题标题】:Serving personalized javascript code to a client为客户提供个性化的 JavaScript 代码
【发布时间】:2016-02-25 13:05:46
【问题描述】:

首先,我尝试在不同的问题和论坛中寻找答案,但我一直在努力找到正确的搜索关键字,所以我没有找到任何相关内容。

基本上,我已经开始为网站开发一个简单的实时聊天小部件实现,类似于olarkliveChat 等。因为我将使用 Socket.IO,所以我正在寻找一个简单的向潜在客户提供 javascript 代码的方式(这很可能不是精通技术)。所以想法是只使用一个简单的<script> 标签,它可以动态创建另一个脚本标签,其源指向我的服务器,或者只是一个具有正确源的脚本标签。

我遇到的问题是关于服务器对该请求的响应。在测试实现中,我添加了一个脚本标记,它调用服务器,服务器用字符串中的 javascript 代码进行响应,我发现这是一种非常粗略的方法。我不能只提供一个简单的 javascript 文件的原因是,因为它需要个性化,所以我可以跟踪客户端连接的位置,以便获得正确的“代理”(网站经理) .我可能可以为每个用户创建单独的文件,但我不确定它的可维护性和效率如何。

所以我的问题是,我将如何以一种高效且安全的方式提供这种个性化的 JavaScript 代码?我使用 Laravel 作为后端,如果这有什么不同的话。

【问题讨论】:

  • 您所服务的 javascript 的个性化程度究竟如何?只是一些变量为不同的用户获取不同的值吗?
  • 是的,只是一些令牌和请求密钥。但理想情况下,如果出现问题(软件更新、漏洞等),我希望能够更改客户网站上的代码,而无需他们进行任何更改。

标签: javascript laravel socket.io


【解决方案1】:

在测试实现中,我添加了一个脚本标签,它调用服务器,服务器用字符串中的 javascript 代码进行响应,我找到了一种非常粗略的方法。

如果它满足您的需求,这是一个很好的解决方案。

如果感觉粗糙,有一些东西可以帮助保持清洁。将您的 javascript 保存在一个单独的文件中,并使用 file_get_contents 从该文件中读取。在需要使用占位符进行个性化设置的地方,可以添加%s 并使用sprintf 弹出个性化设置。

有一些相当大的广告网络以这种方式提供 javascript,所以我不认为这种方法有任何固有的错误。

就安全性而言,除了确保一切都通过 HTTPS 提供服务之外,我不确定您还能做什么。我希望不需要通过 get 变量传递敏感信息。

【讨论】:

  • 不错!感谢您的回复。我没有想过使用file_get_contentssprintf,这肯定会让它稍微优雅一些​​。至于安全性,我不会发送敏感信息,所以我认为 HTTPS 就足够了。
【解决方案2】:

您可以只将不带<script> 标记的javascript 传输到客户端,然后使用eval() 在那里运行代码。

【讨论】:

  • 那么,基本上只用一串代码来响应请求?因为,正如我在问题中所说,这就是我现在正在做的事情,但我觉得这是一种相当肮脏的方式。
  • 肯定是脏的。如果您不需要灵活性,最好传递某些参数并将它们与已经在客户端定义的固定函数一起使用。例如。你传递 (100,150,20) 并使用这三个值在客户端调用函数 drawCircle(100,150,20)。
  • 这个想法是让客户端的代码尽可能简单,所以就像 之类的东西,其中包含实际执行。
  • 通常你会有一组固定的函数可供选择。只需将它们放在一个 JS 文件中,包含它并使用某种跳转表调用您需要的函数
  • 我没听懂。请详细说明一下好吗?
猜你喜欢
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 2016-11-25
  • 2012-04-03
相关资源
最近更新 更多