0

我正在尝试从查询 google 的安全浏览 api 解析响应数据,并且响应似乎是一个 javascript 原型对象,我在尝试转换或解析为 JSON 时没有运气。我的ajax调用如下:

$( document ).ready(function() {
console.log( "ready!" );

//first fake links and event listeners
AddFakeLinks(faulty_links, curr_list);

//url checker action
$("#my_form").submit(function(event){
    event.preventDefault(); //prevent default action 

    var api_url = "https://safebrowsing.googleapis.com/v4/threatMatches:find?"
    var key = 'AIz________________________ns'
    api_url += "key="
    api_url += key

    var payload = 
    {
        "client":{
            "clientId": "_________________.googleusercontent.com",
            "clientVersion": "1.0.0",
        },
        "threatInfo": {
            "threatTypes":      ["MALWARE", "SOCIAL_ENGINEERING"],
            "platformTypes":    ["WINDOWS"],
            "threatEntryTypes": ["URL"],
            "threatEntries": [
              {"url": "http://www.pitt.edu/"},
              {"url": "http://www.exchange.pitt.edu/"}
            ]
          }
    };

    $.ajax({
        type: "POST",
        url: api_url,
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify(payload),
        xhr: function(){
            //upload Progress
            var xhr = $.ajaxSettings.xhr();
            if (xhr.upload) {
                xhr.upload.addEventListener('progress', function(event) {
                    var percent = 0;
                    var position = event.loaded || event.position;
                    var total = event.total;
                    if (event.lengthComputable) {
                        percent = Math.ceil(position / total * 100);
                    }
                    //update progressbar
                    $("#upload-progress .progress-bar").css("width", + percent +"%");
                }, true);
            }
            return xhr;
        },
        success:function (data) {
            console.log(data);
        },
        error:function(jqXhr, textStatus, errorThrown) {
             console.error(textStatus, errorThrown) 
        }
    }).done(function(response){
        $("#server-results").html(response);
        console.log(response);
    });

控制台有以下输出: 在此处输入图像描述

网络控制台显示响应为 200 ok:

在此处输入图像描述

4

1 回答 1

0

我根本不熟悉这个 API。但是在查看文档后,问题似乎是您的请求不匹配。

https://developers.google.com/safe-browsing/v4/lookup-api

响应正文

响应正文包括匹配信息(列表名称和在这些列表中找到的 URL、元数据(如果可用)和缓存持续时间)。有关更多详细信息,请参阅threatMatches.find 响应正文和代码示例后面的说明。

注意:如果没有匹配项(即,如果在请求中指定的任何列表中都找不到请求中指定的 URL),则 HTTP POST 响应仅在响应正文中返回一个空对象。

于 2020-04-07T17:25:07.217 回答