问题描述
我正在编写一个 Thunderbird 扩展程序,以通过 Rackspace API 提交电子邮件阻止列表添加请求。
我像这样通过 $Ajax 提交请求:
$.ajax({
beforeSend: function(request)
{
console.log("beforeSend");
request.setRequestHeader("X-Api-Signature",Signature);
console.log("beforeSend Request %o: ",request);
return true;
},contentType: 'application/x-www-form-urlencoded; charset=UTF-8',crossDomain: true,headers: {Accept: 'text/xml'},method: 'POST',url: Api_Obj.Url,withCredentials: true,success: function(rData,Status,Xhr) {
console.log("Request: %o",Xhr);
console.log("Request.method: " + Xhr.Accept);
console.log("Successfully added email to blocklist.");
},error: function(request,msg,error) {
console.log("Failed to add email to blocklist.");
console.log("Request: %o",request);
console.log("msg: " + msg);
console.log("error: " + error);
Headers = request.getAllResponseHeaders();
console.log("Headers.length = " + Headers.length);
for(let Header_Obj of Headers)
{
console.log("Header %o",Header_Obj);
}
原始请求标头如下所示(我用 X 替换了客户帐号):
OPTIONS /v1/customers/XXXXXX/domains/sandypondconsulting.com/rs/mailBoxes/ed.swartz/spam/blocklist/Flyerdesigner@outlook.com HTTP/1.1
Host: api.emailsrvr.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.1
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip,deflate,br
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-api-signature
Origin: moz-extension://2d279a4e-effd-4688-adfa-6dd24a9d4aa5
Connection: keep-alive
原始响应标头是:
HTTP/1.1 403 禁止 内容类型:文本/xml;字符集=utf-8 服务器:Microsoft-IIS/8.5 X-CO-相关性 ID:38865f21-4e09-447a-8556-f984c3e94da0 X-CO-网址:https://api.emailsrvr.com/v1/customers/XXXXXXX/domains/sandypondconsulting.com/rs/mailboxes/ed.swartz/spam/blocklist/Flyerdesigner@outlook.com x 错误消息:身份验证失败。 X-Powered-By: ASP.NET 日期:2021 年 4 月 23 日星期五 21:18:21 GMT 内容长度:323
“跨源请求被阻止:同源策略不允许读取远程资源”
参数 2: msg = "错误" 参数3:error = ""
不幸的是,由于错误信息很少,因此很难(不可能?)确定故障的实际原因。
我相信我已经检查并测试了所有可能出错的项目,并确保它是正确的。我检查过:
- 客户帐号
- X-Api 签名
- Rackspace API
我在其他 StackOverflow 帖子中阅读了有关跨域请求被阻止的内容。
但是,我假设 Rackspace 将验证请求,如果验证将处理它。
我已向 Rackspace 提交了一张票。但是,它们仅支持用户界面而不支持 API。
谢谢,埃德
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)