gpt4 book ai didi

javascript - JSON/JSONP 如何使用 for(;;);在响应正文中

转载 作者:行者123 更新时间:2023-11-28 02:41:18 25 4
gpt4 key购买 nike

我似乎无法找到一种方法来忽略跨域 JSONP 请求的响应正文中的 for(;;); 。我在自己的服务器上执行此操作,这里没有发生任何其他事情。我试图将 for(;;); 包含在回调的响应正文中,如下所示:

_callbacks_.callback(for(;;);[jsondata....]);

但是如何在 JS 代码解析之前将其从响应正文中删除呢?顺便说一句,我正在使用 Google Closure Library。

最佳答案

好吧,我想我已经明白了。for(;;); 的原因是为了防止某些信息的跨域数据请求。因此,基本上,如果您拥有想要保护的信息,则可以通过正常的 Ajax JSON channel ,如果您将数据存储在多个服务器上,则可以在服务器级别上处理它。

JSONP 请求实际上是一个远程脚本包含,这意味着服务器输出的任何内容都是实际的 Javascript 代码,因此如果您有 for(;;);在您的_callbacks_.callback();之前请求成功后,代码将在原始域上执行。如果是无限的for循环,显然会卡住页面。

所以正常的实现方法如下:

  1. 向位于同一服务器上的文件发送正常的 Ajax 请求。
  2. 执行服务器级别的操作并通过加密的 CURL 向外部服务器发送请求。
  3. 为服务器响应添加安全性(for(;;);while(1);throw(1); 后跟 <prevent eval statements> 字符串。
  4. 获取文本字符串形式的响应。
  5. 从字符串中删除您的安全实现。使用标准 JSON 解析器将字符串(现在是“JSON 字符串”)转换为 JS 对象/数组等。
  6. 对数据做任何您想做的事情。

我只是想我应该把这个放在这里,以防其他人将来用谷歌搜索它,因为我没有通过谷歌找到正确的信息。这应该有助于防止跨域请求伪造。

关于javascript - JSON/JSONP 如何使用 for(;;);在响应正文中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12609719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com