Pracuję nad utworzeniem wywołania AJAX, które uderza w API Mailgun, aby wysłać wiadomość e-mail. Dokumentacja na Mailgunie mówi, że żądania pocztowe powinny być wysyłane na "https://api.mailgun.net/v3/domain.com/messages". Podałem mój klucz API zgodnie z ustawieniem mailgun (polecają użyć nazwy użytkownika "api"). Ponieważ dotyczy to CORS, nie mogę pominąć błędu: Pole nagłówka żądania Autoryzacja nie jest dozwolona przez Access-Control-Allow-Headers.Funkcja AJAX w/Mailgun, uzyskanie "pola nagłówka żądania błędu Autoryzacja jest niedozwolona przez Access-Control-Allow-Headers"
Sprawdziłem jednak żądania/odpowiedzi na karcie Sieć, a "Kontrola dostępu-Pozwól-Origin" w odpowiedzi z programu Mailgun ustawiono na "*" ... co powinno wskazywać, że powinno to zezwalać ? (Zobacz żądanie/odpowiedź poniżej): Edytowałem rzeczywistą domenę i mój klucz 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
Mój kod do wywołania AJAX jest poniżej, w którym to moje poświadczenia w nagłówkach i domenę, gdy placówka ma iść. Nie wiesz, dlaczego to nie działa. Czy to dlatego, że testuję na hoście lokalnym? Nie sądziłem, że to by miało znaczenie, ponieważ "Access Control Allow Origin: *" w nagłówku odpowiedzi. Każda pomoc będzie bardzo ceniona! Dziękuję Ci.
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;
}
Może być konieczne dodanie opcji "Access-Control-Allow-Headers: Authorization" dla błędu. – Drazisil
@Drazisil dziękuję za odpowiedź, ale czy nie muszę mieć dostępu do serwerów pocztowych, aby móc to zrobić (skoro jest to żądanie od lokalnego hosta do skrzynki pocztowej)? gdzie mam to dodać? – DanielleCS
Moje przeprosiny, myślałem, że to były nagłówki zapytań. Myślę, że problem może polegać na tym, że próbujesz w ogóle przejść podstawowe uwierzytelnianie, to zwykle jest klucz API. Nie widzę tego w https://documentation.mailgun.com/api-sending.html#examples, mogę odroczyć komuś, kto zna API. – Drazisil