sto lavorando per rendere una chiamata AJAX che ha colpito il Mailgun API per inviare e-mail. La documentazione su Mailgun dice che le richieste di posta dovrebbero essere fatte a "https://api.mailgun.net/v3/domain.com/messages". Ho incluso la mia chiave API come specificato da mailgun (loro insegnano a usare un nome utente di 'API'). Poiché ciò coinvolge CORS, non riesco a superare l'errore: campo dell'intestazione della richiesta L'autorizzazione non è consentita da Access-Control-Allow-Headers.funzione AJAX w/Mailgun, ottenendo "errore di richiesta campo di intestazione di autorizzazione non è consentita da Access-Control-Allow-Headers"
Tuttavia, ho ispezionato le richieste/risposte nella scheda Rete e "Access-Control-Allow-Origin" nella risposta da Mailgun è impostato su "*" ... che dovrebbe indicare che dovrebbe consentirlo ? (Vedi richiesta/risposta di seguito): Ho modificato il dominio effettivo e la mia chiave 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
Il mio codice per la chiamata AJAX è al di sotto, in cui includo le mie credenziali nelle intestazioni e il dominio a cui si suppone che il post per andare. Non sei sicuro di cosa stia causando questo a non funzionare. È perché sto testando l'host locale? Non pensavo che avrebbe fatto la differenza poiché "Access Control Allow Origin: *" nell'intestazione della risposta. Qualsiasi aiuto sarebbe molto apprezzato! Grazie.
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;
}
Potrebbe essere necessario aggiungere 'Access-Control-Allow-Headers: AUTORIZZAZIONE per l'errore. – Drazisil
@Drazisil grazie per la risposta, ma non ho bisogno di avere accesso ai server di mailgun per essere in grado di farlo (dal momento che è una richiesta da localhost a mailgun)? dove dovrei aggiungere questo? – DanielleCS
Le mie scuse, stavo pensando che quelle erano le intestazioni delle richieste. Penso che il problema potrebbe essere che si sta tentando di passare l'autenticazione di base a tutti, che è normalmente ciò che la chiave API è per. Non lo vedo in https://documentation.mailgun.com/api-sending.html#examples, posso rimandare a qualcuno che conosce l'API. – Drazisil