【问题标题】:Using AJAX to call JavaScript remotely使用 AJAX 远程调用 JavaScript
【发布时间】:2014-07-16 14:24:21
【问题描述】:

假设我有一个带有以下代码的 js 页面(上传到某个服务器,地址为:myaddress/service.js):

nsBob = {
 a: function(someParam) {...do something here and return result},
 b: function() {...do something here and return result},
 c: function() {...do something here and return result}
};

现在假设我有一个应用程序,在不同的域中,我想使用 nsBob 的功能之一。例如 nsBob.a(something)。

我怎样才能在不同的域中对这个特定的函数进行这个简单的 ajax 调用,以便仅获取该函数的结果数据? 有或没有传递参数。 如果您能以某种方式向我展示一个完整的工作示例,我将不胜感激。

非常感谢!

【问题讨论】:

  • 如果您知道该链接,您可以通过编写服务器脚本来获取它然后将其呈现到页面来规避跨域问题。例如:<?php echo file_get_contents('website_address');?>,然后在代码中使用所需地址的参数引用此服务器文件。
  • 如何在没有任何 php 代码但只使用 javascript 调用的情况下做到这一点?
  • 防止其他人看到此代码的唯一方法是通过某种身份验证。由于身份验证令牌和不能使用<script> 标签发送的内容,您唯一的选择是将其作为文本获取(同时正确遵循 CORS)并对其进行评估,或者首先不担心它。混淆并不能阻止人们看到代码是如何工作或重用它的,即使使用 CORS 选项,下载它的客户端也可以看到它。最好的选择是不用担心,将敏感内容移出客户端代码。

标签: javascript ajax api


【解决方案1】:

有一个getScript()。您可能还可以将脚本作为文本获取并使用eval() 运行它。完整的示例我现在没有时间,抱歉。

【讨论】:

  • eval 告诉人们在这种情况下使用是不好的。实际上,在几乎所有情况下, eval 或多或少都是坏的,并且在某种意义上被实际推理贬值了
  • 他们说这几乎总是很糟糕。哦,好吧,我只是提出不同的选择/可能性。
  • 问题是 - 我不想公开我的代码。我只想将“service.js”用作服务。获取函数调用并返回数据。
  • @FED 我认为没有任何真正的方法可以像这样隐藏您的 JavaScript。你可能会在另一边想出一些 PHP-hack,但这也很可能会在某个时候暴露代码。混淆 JavaScript 怎么样?
  • 是的,这就是我可能会做的。混淆足够安全吗?然后 - 我如何使用 js 从应用程序通过 ajax 调用返回完整的 nsBob 对象及其函数?只是一个脚本注入器?
猜你喜欢
  • 1970-01-01
  • 2012-07-01
  • 2013-09-01
  • 2013-01-07
  • 1970-01-01
  • 2016-08-03
  • 2012-04-17
  • 1970-01-01
  • 2013-07-01
相关资源
最近更新 更多