繁体   English   中英

带Mailgun的AJAX函数,获取“错误请求标头字段,Access-Control-Allow-Headers不允许授权”

[英]AJAX function w/ Mailgun, getting “ERROR Request header field Authorization is not allowed by Access-Control-Allow-Headers”

我正在做一个打Mailgun API的AJAX调用来发送电子邮件。 Mailgun上的文档说发帖请求应该发送到“ https://api.mailgun.net/v3/domain.com/messages ”。 我已经包含了mailgun指定的api密钥(它们指示使用用户名“ api”)。 由于这涉及CORS,因此我无法避免以下错误:Access-Control-Allow-Headers不允许请求标头字段进行授权。

但是,我已经检查了“网络”选项卡中的请求/响应,并将Mailgun响应中的“ Access-Control-Allow-Origin”设置为“ *” ...这应该表明它应该允许它? (请参阅下面的请求/响应):我已经编辑了实际的域和我的API密钥。

Remote Address:104.130.177.23:443
Request URL:https://api.mailgun.net/v3/domain.com/messages
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, authorization
Access-Control-Request-Method:POST
Connection:keep-alive
Host:api.mailgun.net
Origin:null
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
Response Headersview source
Access-Control-Allow-Headers:Content-Type, x-requested-with
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Max-Age:600
Allow:POST, OPTIONS
Connection:keep-alive
Content-Length:0
Content-Type:text/html; charset=utf-8
Date:Fri, 20 Mar 2015 19:47:29 GMT
Server:nginx/1.7.9 

我的ajax调用代码如下,其中,我的凭据包含在标题中,以及帖子应该到达的域。 不知道是什么原因导致此方法不起作用。 是因为我正在本地主机上进行测试吗? 我不认为这会有所作为,因为响应头中的“访问控制允许起源:*”。 任何帮助将不胜感激! 谢谢。

function initiateConfirmationEmail(formObj){

  var mailgunURL;
  mailgunURL = "https://api.mailgun.net/v3/domain.com/messages"
  var auth = btoa('api:MYAPIKEYHERE');

    $.ajax({
    type     : 'POST',
    cache    : false,
    headers: {"Authorization": "Basic " + auth},
    url      : mailgunURL,
    data     : {"from": "emailhere", "to": "recipient", etc}, 
    success  : function(data) {
      somefunctionhere();
    },
    error  : function(data) {
      console.log('Silent failure.');
    }
  });
  return false;
}

上面的德拉济西是正确的。 响应中必须包含Access-Control-Allow-Headers: Authorization因为您在请求中包含该标头,而Authorization不是简单的标头

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM