-2

我正在使用 JIVE JSON RESTFul API,在他们的 API 上他们有安全性

(我指的是 throw 'allowIllegalResourceCall is false.';)

throw 'allowIllegalResourceCall is false.';
{
  "id" : "52104", 
}

我正在使用此代码尝试解析它:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {   
        var myObj = JSON.parse(this.responseText);
        document.getElementById("topdisplay").innerHTML = myObj.id;
    }    
};
xmlhttp.open("GET", "http://mysite/API/",true);
xmlhttp.send();

由于那条起跑线,我得到了一个错误。我到处寻找解决方案来跳过 JSON PARSE 的工作,但我似乎找不到可行的方法。

我也知道解析代码可以正常工作,因为当我删除第一行时它可以正常工作。

有什么帮助吗?

4

1 回答 1

-2

JIVE REST API 引入了这一点,以帮助防止在 Web 浏览器易受攻击时返回 JSON 劫持。

您需要先找到{,然后从该位置到字符串末尾执行一个子字符串。

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {

    if (this.readyState == 4 && this.status == 200) {   
        var response = this.responseText
                var myObj = JSON.parse(this.responseText.substring(this.response.indexOf('{')));

        document.getElementById("topdisplay").innerHTML = myObj.id;
    }    
};

xmlhttp.open("GET", "http://mysite/API/",true);
xmlhttp.send();

笔记:

使用 RegEx,您需要找到带有 throw 并以分号结尾的第一行,如果找到替换为空字符串。

JSON.parse(response.replace(/throw.*;/, "").trim());
于 2017-08-09T18:10:21.400 回答