我似乎无法找到忽略我的跨域JSONP请求的响应正文中的for(;;);
的方法。我在自己的服务器上这样做,这里没有别的事。我试图将for(;;);
包含在我的回调的响应主体中:
_callbacks_.callback(for(;;);[jsondata....]);
但是如何在解析JS代码之前将其从响应主体中删除?我正在使用Google Closure Library btw。
答案 0 :(得分:1)
好的,我想我明白了。 之所以为(;;);是否有防止某些信息的跨域数据请求。所以基本上如果你有想要保护的信息,你可以通过一个普通的Ajax JSON通道,如果你在多个服务器上存储数据,你可以在服务器级别处理它。
JSONP请求实际上是一个远程脚本包含,这意味着无论服务器输出是什么实际的Javascript代码,所以如果在for(;;);
之前有_callbacks_.callback();
代码将在原始域上执行要求成功。如果它是一个无限循环,它显然会堵塞页面。
所以正常的实现方法如下:
for(;;);
或while(1);
或throw(1);
后跟<prevent eval statements>
字符串。我以为我应该把它放在这里以防万一其他人将来谷歌它,因为我没有通过谷歌找到适当的信息。这有助于防止跨域请求伪造。