嗨,我正在尝试在JavaScript Web应用程序中向SparkPost API发送POST调用。它适用于 curl 和 Postman,但是一旦我尝试从我的本地主机站点发送,我就会收到401 Unauthorized
错误。
我当前的代码如下所示,但我也尝试了fetch
相同的结果。
sendEmail(subject, data) {
let textbody = "blah blah blah";
const url = "https://api.sparkpost.com/api/v1/transmissions";
const fetchbody = {
content: {
from: "sandbox@sparkpostbox.com",
subject: subject,
text: textbody
},
recipients: [{address: "myaddress@gmail.com"}]
};
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", url);
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("authorization", creds);
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(JSON.stringify(fetchbody));
}
我的凭据设置在这里有问题吗?请注意,creds
设置为我的秘密 API 密钥字符串。
在与 Sparkpost 开发人员聊天后想通了 - 该服务只允许"严格的 CORS",即来自服务器端的请求,而我正在从客户端代码发送请求。