无法通过身份验证向mailgun发送ajax请求

mas*_*ugo 4 ajax middleman mailgun

我可以做这个:

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
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用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');
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

服务器回复401.任何想法为什么?

谢谢

Mus*_*usa 5

尝试使用usernamepassword字段

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

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

headers: {"Authorization": "Basic "+btoa("api:key-b50a9065a7b9bdf464f3d7a418ca96bb")},
Run Code Online (Sandbox Code Playgroud)

  • @masciugo你是如何克服`Access-Control-Allow-Origin`或`access-Control-Allow-Headers`限制的? (3认同)