1

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

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

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

4

1 回答 1

1

好吧,我想我明白了。for(;;); 的原因 是否有防止某些信息的跨域数据请求。所以基本上,如果你有信息,你试图保护你通过一个正常的 Ajax JSON 通道,如果你在多个服务器上存储数据,你在服务器级别处理它。

JSONP 请求实际上是一个远程脚本包含,这意味着无论服务器输出什么都是实际的 Javascript 代码,所以如果你有一个for(;;);before 你_callbacks_.callback();的代码将在请求成功时在源域上执行。如果是无限for循环,显然会卡住页面。

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

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

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

于 2012-09-26T21:04:15.273 回答