繁体   English   中英

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

[英]Can't send POST request to a REST API from a Chrome extension

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

响应始终是“422 无法处理的实体”(当我尝试对要发送的 JSON 进行字符串化时)或“500 内部服务器错误”(当我尝试按原样发​​送 JSON 时)。 奇怪的是,问题不在于端点——我可以成功地从 Node.js 应用程序向它发出 POST 请求,甚至可以使用 cURL。 所以我认为它必须与扩展有关。

下面的代码使用 JQuery Ajax 发送请求,但是我也尝试过使用 fetch、XmlHTTPRequest,我什至尝试使用 Axios 只是为了更好的衡量。 什么都行不通。

这是我的popup.js文件中带有 test 函数的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 扩展程序有关的特定内容吗? 或者也许我只是看错了方向?

在这里,我使用 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]));
    }

你也可以指出我的缺点,谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM