如何提交 Rackspace API 电子邮件添加阻止列表请求

问题描述

我正在编写一个 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

错误显示在调试器控制台中:

“跨源请求被阻止:同源策略不允许读取远程资源”

调用 $Ajax 失败函数并接收这些值:

参数 2: msg = "错误" 参数3:error = ""

不幸的是,由于错误信息很少,因此很难(不可能?)确定故障的实际原因。

我相信我已经检查并测试了所有可能出错的项目,并确保它是正确的。我检查过:

  • 客户帐号
  • X-Api 签名
  • Rackspace API

我在其他 StackOverflow 帖子中阅读了有关跨域请求被阻止的内容

但是,我假设 Rackspace 将验证请求,如果验证将处理它。

我已向 Rackspace 提交了一张票。但是,它们仅支持用户界面而不支持 API。

谢谢,埃德

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)