2016-04-23 156 views
3

我试图在角度请求中转换下面的示例代码。Mailgun + AngularJS + Auhtentication为http post请求

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 <[email protected]_DOMAIN_NAME>' \ 
    -F [email protected]_DOMAIN_NAME \ 
    -F [email protected] \ 
    -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); 
    }) 

回答

0

尝试添加 用户名: 'API', 密码: 'yourapikey',

在你的头的请求

+0

变种REQ = { 方法: 'POST', 网址:网址, 用户名: “API” , 密码:“API密钥”, data:dataFields } –

+0

不起作用仍然说禁止 – Sumant

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: "[email protected]", 
      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 - 对于参数
  • base64编码api密钥