在 Javascript 中,在制作 XHR 或接收推送通知时,JSON 以空的 for(;;); 开头的目的是什么?
What is the purpose of a JSON starting with an empty for(;;); in Javascript when making XHR or receiving Push notifications?
我想
问一下,在进行XHR或服务器向浏览器发出推送通知时,这种响应的目的是什么:
for(;;);[{"syncId": 2, "changes" : [["change",{"pid":"7"},["10",{"id":"7"}]]], "state":{"5":{"childData":{"7":{"alignmentBitmask":48,"expandRatio":0}}},"7":{"caption":"This is the real UI","text":""}}, "types":{"5":"1","7":"10"}, "hierarchy":{"5":["7"],"7":[]}, "rpc" : [], "meta" : {"async":true}, "resources" : {}, "typeMappings" : { "com.vaadin.ui.AbstractField" : 11 , "com.vaadin.ui.AbstractTextField" : 12 , "com.vaadin.ui.TextArea" : 10 }, "typeInheritanceMap" : { "11" : 6 , "12" : 11 , "4" : 9 , "6" : 5 , "10" : 12 , "8" : 4 , "9" : 6 , "1" : 8 }, "timings":[185, 6]}]
我的意思是,我知道它是一个 JSON(或者至少应该是(,但是响应开始时的for(;;);
呢?这是干什么用的?
我以前没有见过前面的for(;;);
结构 - 它是JavaScript,绝对不是有效的JSON。
您正在查看的内容可能是一个技巧,可以弄乱试图从不同域读取响应的人。浏览器中的跨源限制意味着您不能随意从随机域加载资源。但是,您可以做的是从另一个域加载JavaScript位:例如,Google Analytics就是这样做的。
也许您从中获得响应的任何服务都试图通过在响应前面粘贴无限循环来阻止忙碌者执行此类请求,从而削弱任何试图将其作为脚本请求然后逐字运行响应的人的浏览器。
然而,这都是猜测;它可能完全是另一回事。
编辑:如果你得到响应的服务是Facebook,这个答案给出了一个更合理的解释:显然Facebook添加它是为了迫使其开发人员使用受信任的JSON解析器。
for(;;);
不是标准的 JSON。看起来像响应错误。
如果将其删除,则 json 有效。
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 在 aurelia 中使用 repeat.for 绑定自定义元素的正确方法是什么
- 在 JavaScript 中的 for 循环中重新分配变量的目的是什么?
- 在 Javascript 中,在制作 XHR 或接收推送通知时,JSON 以空的 for(;;); 开头的目的是什么?
- 字符串上的 for/in 循环是什么意思
- JSHint认为for-in变量是“坏的”.这是什么意思
- 在 JS 中的 for 循环中重新分配变量是什么意思
- while和for循环的目的是什么,if代码中的语句
- 在 Array.prototype 中传递“for each”循环的参数的语法是什么?
- 我的For循环计时不正确,是什么'It’他错了
- 给for循环的结束点赋值的优缺点是什么?
- 在javascript中编写非阻塞的for循环最干净的方法是什么?
- JavaScript中for循环中的单元化变量——它的语义是什么
- 是什么导致原型变量在使用“for in”时显示
- 这个for in循环是什么意思,为什么它只输出0和1
- 如何在for(prop in obj)循环中分配内存,最好的方法是什么