Sto cercando di ottenere una richiesta AJAX che funzioni tra il mio browser e un server Apache (residente in un dominio diverso) usando CORS.CORS non funziona su Chrome/Firefox e Apache
Al lato server, ho fatto le seguenti modifiche nella sezione httpd.conf del server secondo le risposte in "Header set Access-Control-Allow-Origin in .htaccess doesn't work":
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
mia chiamata AJAX è della forma:
$.ajax({
url :'https://x.x.x.x/validateCustomerID',
type : 'POST',
cache : false,
crossDomain: true,
contentType: 'application/json',
beforeSend: function(xhr){
xhr.setRequestHeader("Access-Control-Allow-Methods","POST");
xhr.setRequestHeader("Access-Control-Allow-Headers","X-Requested-With");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
},
data : {loginId : '12345'},
success : function(response){console.log("Success"+JSON.stringify(response))},
error : function(response){console.log("Error"+JSON.stringify(response))}
});
}
Ho anche provato a commentare outSend() per evitare una richiesta di preflight ma non ha avuto esito positivo neanche.
I messaggi di errore che ricevo su Chrome e Firefox sono:
- In Chrome:
"XMLHttpRequest non può caricare https://x.x.x.x/validateCustomerID 'Access-Control-Allow-Origin' Nessuna intestazione è presente. sulla risorsa richiesta. L'origine 'null' non è quindi consentita l'accesso.La risposta aveva il codice di stato HTTP 403. "
- In Firefox:
"Richiesta Cross-Origin bloccati: La stessa politica di origine non consente la lettura della risorsa remota a https://x.x.x.x/validateCustomerID.. (Motivo: richiesta CORS non)"
Non ci sono intestazioni di risposta ricevute dal server nel mio browser che ritengo siano obbligatorie per CORS per funzionare e anche i registri nel server non mostrano alcuna richiesta che lo raggiunga dal mio browser.
Sarei davvero grato se qualcuno qui può aiutarmi a risolvere questo problema perché sono bloccato da alcuni giorni e ho utilizzato quasi tutti i metodi di hit e di prova per far funzionare questa cosa.
Hai attivare le intestazioni dei moduli di Apache 'headers' a2enmod ? –
Perché stai provando a impostare le intestazioni di Access-Control nella ** richiesta **? – Quentin
@Jacob, ho provato ad attivare le intestazioni dei moduli apache usando il comando head2enmod ma mi ha dato un errore che si trattava di un comando non valido. Poi ho letto da qualche parte che Mod_headers è abilitato di default in Apache quindi l'ho lasciato così com'è. Potrebbe essere un problema? –