无法通过Chrome扩展程序向REST API发送POST请求

时间:2019-06-17 14:07:40

标签: javascript api google-chrome-extension httprequest

我正在为我的销售部门编写Chrome扩展程序,以帮助将销售线索从一个Freshsales帐户转移到另一个帐户,并且我使用他们的RESTful API来实现这一目标。 GET请求工作正常,但我似乎无法发出任何POST(甚至PUT)请求。

响应始终是“ 422无法处理的实体”(当我尝试对要发送的JSON进行字符串化时)或“ 500 Internal Server Error”(当我尝试按原样发​​送JSON时)。奇怪的是,问题不在于端点-我可以从Node.js应用程序甚至使用cURL成功向其发出POST请求。因此,我认为它与扩展名有关。

下面的代码使用JQuery Ajax发送请求,但是我也尝试使用fetch,XmlHTTPRequest进行此操作,甚至还尝试使用Axios来达到很好的效果。什么都没有。

这是我的popup.js文件中带有测试功能的摘录(以前是content.js中的文件,并且不能完全一样工作):

$.post({
    url: "https://{domain}.freshsales.io/api/leads",
    headers: {
      "Authorization": "Token token={api_token}",
      "Content-Type": "application/json"
    },
    data: {"lead":{"first_name":"James","last_name":"Testson","email":"james.test@gmail.com","company":{"name":"Business Inc."}}}
  }).then(function(res){
    console.log(res);
  }, function(err){
    console.log(err);
  });
}

这是我的manifest.json(这是本教程的经过修改的示例,因此可能有一些不必要的权限)

  {
    "name": "Lead Transfer Tool",
    "version": "1.0",
    "description": "guess what it does",
    "permissions": [
      "activeTab", "declarativeContent", "storage", "https://*/*"
    ],
    "background": {
      "scripts": ["background.js"],
      "persistent": false
    },
    "page_action": {
      "default_popup": "popup.html"
    },
    "manifest_version": 2
  }

最大的问题是,我什至无法正确调试-响应是单个错误代码(如果发生错误422),或者整个HTML页面上的内容基本上是“发生了错误,我们很抱歉等等。” (如果出现错误500)。与Chrome扩展程序有什么特定的联系吗?还是我只是看错了方向?

1 个答案:

答案 0 :(得分:0)

在此,我使用content.js来完成我需要做的所有事情 也许这对您有帮助:

        let xml = new XMLHttpRequest();
        xml.open('POST', "https://localhost:44311/crawler/hsx", true);
        xml.setRequestHeader("Content-Type", "application/json; charset = UTF-8");//t think this is main problem cause your error
        xml.onreadystatechange = function () {
            if (xml.readyState == 4) {
                console.log("Success!");
            }
        }
        xml.send(JSON.stringify(arrObj[i]));
    }

您也可以指出我的劣势,谢谢!