[英]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.