阅读了 this 这个问题,问为什么谷歌/脸书等会在他们的JSON响应中添加无法解析的冗余代码,例如:
while(1);
for(;;);
&&&START&&& ... &&&END&&&
- 1和3组合
我已经理解了动机。但是我仍然不清楚为什么要使用这些相对复杂的机制,当可以通过以下方式实现类似的效果:
- 在开头添加额外的
)
使整行无效并出现语法错误 - 用注释包装JSON
while(1);
的解决方法进行了批评(指出1可能会被覆盖),并拒绝了另一种形式的解决方法{}&&
,但没有解释原因或引用任何来源。其他参考资料:
- http://code.google.com/p/fbug/issues/detail?id=369
- http://prototypejs.org/learn/json,建议将JSON包装在
/*-secure-\n...*/
中