2015-03-20 2 views
8

Я работаю над вызовом AJAX, который попадает в API Mailgun для отправки электронной почты. Документация на Mailgun говорит, что почтовые запросы должны быть сделаны в «https://api.mailgun.net/v3/domain.com/messages». Я включил свой api-ключ, как указано в mailgun (они инструктируют использовать имя пользователя «api»). Поскольку это связано с CORS, я не могу пройти мимо ошибки: Поле заголовка запроса. Разрешения Access-Control-Allow-Headers разрешены.Функция AJAX с Mailgun, получая «поле заголовка запроса ERROR Авторизация не разрешена с помощью Access-Control-Allow-Headers»

Тем не менее, я проверил запросы/ответы на вкладке «Сеть» и «Контроль доступа-Разрешить-Происхождение» в ответе от Mailgun установлен на «*» ..., который должен указывать на то, что он должен позволять это ? (См. Запрос/ответ ниже): Я отредактировал фактический домен и мой ключ 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; 
} 
+0

Возможно, вам понадобится добавить 'Access-Control-Allow-Headers: Authorization' за ошибку. – Drazisil

+0

@Drazisil спасибо за ответ, но мне не нужно иметь доступ к серверам mailgun, чтобы иметь возможность сделать это (так как это запрос от localhost to mailgun)? где я могу добавить это? – DanielleCS

+0

Мои извинения, я думал, что это были заголовки запросов. Я думаю, проблема может заключаться в том, что вы пытаетесь передать базовую аутентификацию вообще, обычно это ключ API. Я не вижу этого в https://documentation.mailgun.com/api-sending.html#examples, я могу отложить до того, кто знает API. – Drazisil

ответ

-1

Drazisil правильный сверху. Ответ должен включать Access-Control-Allow-Headers: Authorization, поскольку вы включаете этот заголовок в свой запрос и Authorization не является simple header.

 Смежные вопросы

  • Нет связанных вопросов^_^