用于http post请求的Mailgun + AngularJS + Auhtentication

时间:2016-04-23 19:33:16

标签: angularjs authorization httprequest mailgun

我正在尝试在角度请求中转换下面的示例代码。

https://documentation.mailgun.com/user_manual.html#sending-via-api

curl -s --user 'api:YOUR_API_KEY' \
    https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages \
    -F from='Excited User <mailgun@YOUR_DOMAIN_NAME>' \
    -F to=YOU@YOUR_DOMAIN_NAME \
    -F to=bar@example.com \
    -F subject='Hello' \
    -F text='Testing some Mailgun awesomness!'

我在下面尝试过授权标题,但仍然会发出未经授权的错误。我看到请求标头具有设置值的授权字段。 我做错了什么?

    var url = "https://api.mailgun.net/v3/sandboxXXXXXXXXXXXXXXXXX.mailgun.org/messages";
    var dataFields = {
        to: "verified recepient",
        subject: "subject",
        text: "text",
        from: "postmaster address of sandbox domain"
    }

    var req = {
        method : 'POST',
        url: url,
        headers : {
            'Authorization' : 'Basic api:key-XXXXXXXXXXXXXXXX'
        },
        data: dataFields
    }
    $http(req).then(function(data){
        console.log(data);
    }, function(data){
        console.log(data);
    })

2 个答案:

答案 0 :(得分:6)

最后让它从本地机器上运行 - 来自不同帖子的集体信息并使用这个插件 - https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi - 我能够使它工作。那么这个插件有什么用呢?我可以在邮寄申请中这样做吗?

没有它就会给我错误

XMLHttpRequest cannot load https://api.mailgun.net/v3/sandboxXXXXXXXXXX.mailgun.org/messages. Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.
var url = "https://api.mailgun.net/v3/sandboxXXXXXXXXXXXXXXX.mailgun.org/messages";
        var dataJSON = {
            from: "postmaster@sandboxXXXXXXXXXXXXXXX.mailgun.org",
            to: "registered recepient",
            subject: "Subject text",
            text: "Body text",
            multipart: true
        }

        var req = {
            method : 'POST',
            url: url,
            headers : {
                'content-type': 'application/x-www-form-urlencoded',
                'Authorization': 'Basic ' + $base64.encode('api:key-XXXXXXXXXXXXX')
            },
            transformRequest: function(obj) {
                var str = [];
                for(var p in obj)
                str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                return str.join("&");
            },
            data: dataJSON
        }
        $http(req).then(function(data){
            console.log(data);
        }, function(data){
            console.log(data);
        })
  • 我失踪的事情。
  • 多部分
  • 上下文类型
  • encodedURIComponent - for parameters
  • base64编码的api密钥

答案 1 :(得分:0)

尝试添加 用户名:&#39; api&#39;, 密码:&#39; yourapikey&#39;,

标头请求中的