【问题标题】:Cannot pass authentication sending ajax request to mailgun无法通过身份验证向 mailgun 发送 ajax 请求
【发布时间】:2015-05-18 17:02:12
【问题描述】:

我可以这样做:

curl --user 'api:MYAPIKEY' -F from=foo@bar.it -F to=MYEMAIL@gmail.com -F subject='foo' -F text='bar' https://api.mailgun.net/v3/sandbox93d8299f673a4c3295b7592956cb3d9.mailgun.org/messages

但是当我尝试使用 jquery .ajax() 方法执行相同的请求时,我得到一个登录弹出窗口:

$.ajax({
    headers: {"Authorization": "Basic api:key-b50a9065a7b9bdf464f3d7a418ca96bb"},
    // url: "././mail/contact_me.php",
    url: "https://api.mailgun.net/v3/sandbox93d8299f673a4c32952b7592956cb3d9.mailgun.org/messages",
    type: "POST",
    dataType: 'json',
    data: {
        name: name,
        phone: phone,
        email: email,
        message: message
    },
    // cache: false,
    success: function() {
        alert('ok');
    },
    error: function() {
        alert('problems');
    }
}

服务器以 401 响应。知道为什么吗?

谢谢

【问题讨论】:

标签: ajax middleman mailgun


【解决方案1】:

尝试使用usernamepassword 字段

$.ajax({
    url: "https://api.mailgun.net/v3/sandbox93d8299f673a4c32952b7592956cb3d9.mailgun.org/messages",
    type: "POST",
    dataType: 'json',
    username:'api',
    password: 'key-b50a9065a7b9bdf464f3d7a418ca96bb',
    ...

如果您自己设置标头,则必须对其进行 base64 编码

headers: {"Authorization": "Basic "+btoa("api:key-b50a9065a7b9bdf464f3d7a418ca96bb")},

【讨论】:

  • 太棒了!我想知道为什么official docs 有许多语言的示例,但没有 Javascript 的示例。非常感谢
  • @masciugo 您是如何克服Access-Control-Allow-OriginAccess-Control-Allow-Headers 的限制的?
  • @cYrus 你能解决 Access-Control-Allow-Origin 或 Access-Control-Allow-Headers 限制吗?
  • @user3457759 现在我不记得所有细节了,但我最终在 Chrome 扩展程序中使用它没有任何问题;我认为那里的检查没有那么严格。 MailGun 显然不想支持 JavaScript,因为这需要公开公开 API 密钥。
  • @cYrus 是的,我认为他们只是不允许您使用 JS。迫使您至少创建一个小后端来处理这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2016-10-21
  • 2015-07-25
  • 2016-05-01
相关资源
最近更新 更多