我知道我可以使用 jQuery 和其他库来轻松处理此问题,但我想亲自了解处理这些响应的最佳方法。我花了大量时间寻找处理它们的正确方法,但我发现的只是它们存在的相同解释:反劫持。
所以,标题不言自明。我知道一个非常常见的实现利用while
循环的前置,这可以使用 using 来处理.replace(/^while\(\d*\);/, '')
,但这感觉像是一种粗暴和骇人听闻的处理方式,它只考虑了一种可能的变化。
有没有更好的处理方法?
为了保持简单,一个例子是:
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", function() {
console.log(this.responseText);
});
oReq.open("GET", "http://www.example.org/example.json");
oReq.send();
这可能会产生如下响应:
while(1);{"menu":{"id":"file","value":"File","popup":{"menuitem":[{"value":"New","onclick":"CreateNewDoc()"},{"value":"Open","onclick":"OpenDoc()"},{"value":"Close","onclick":"CloseDoc()"}]}}}
这感觉像是一种粗暴而骇人的处理方式,它只考虑了一种可能的变化。
不,这正是你会做的。或者更不通用,.slice(9)
. 服务器不会预先设置任意甚至动态生成的循环,它们使用最短/最简单的循环来防止 JSON 劫持。因此,您只需处理您请求的服务使用的特定前缀。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句