我正在努力进行 AJAX 调用,该调用会命中 Mailgun API 以发送电子邮件。 Mailgun 上的文档说发布请求应该发送到“https://api.mailgun.net/v3/domain.com/messages”。我已经包含了 mailgun 指定的 api key (他们指示使用用户名“api”)。由于这涉及 CORS,我无法克服错误:Access-Control-Allow-Headers 不允许请求 header 字段授权。
但是,我检查了“网络”选项卡中的请求/响应,并且 Mailgun 响应中的“Access-Control-Allow-Origin”设置为“*”...这应该表明它应该允许它? (请参阅下面的请求/响应):我已经编辑了实际域和我的 API key 。
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 调用代码如下,其中我在标题中包含了我的凭据和帖子应该去的域。不确定是什么导致这不起作用。是因为我在本地主机上测试吗?我认为这不会有什么不同,因为响应 header 中的“访问控制允许来源:*”。任何帮助将不胜感激!谢谢你。
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 因为您在请求中包含该 header 并且 Authorization 不是 simple header .
关于javascript - 带有 Mailgun 的 AJAX 函数,获取 "ERROR Request header field Authorization is not allowed by Access-Control-Allow-Headers",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175006/