Sto provando a fare una richiesta POST cross-origin usando Angular $ http con il seguente codice.
//I've tried setting and removing these http config options
$http.defaults.useXDomain = true;
delete $http.defaults.headers.common['X-Requested-With'];
$http.defaults.headers.common['Content-Type'] = 'application/x-www-form-urlencoded';
//Basic request, with some private headers removed
return $http({
method: 'POST',
//withCredentials:true,
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
params: params,
url: url
});
La richiesta Opzioni Preflight ottiene un 200 OK
, ma la successiva POST riceve una risposta 400 Bad Request
. Osservando la traccia nella finestra di debug di Chrome, non vedo un'intestazione Content-Type: application/x-www-form-urlencoded; charset=UTF-8
per il POST. Presumo che questo è il motivo per cui il server sta restituendo una risposta Bad Request.
Sto impostando alcune altre intestazioni personalizzate che ho omesso dal codice sopra, e vengono inviate e visualizzate correttamente.
Devo anche menzionare che posso fare questa richiesta utilizzando l'app Advanced Rest Client per Chrome e ricevere la risposta corretta. (Un token di accesso)
Ho anche provato a fare un semplice XMLHttpRequest(), ma ottengo gli stessi errori.
Qualche idea sul perché l'intestazione Content-Type non viene impostata?
Possibile duplicato di [Angolare, il tipo di contenuto non viene inviato con $ http] (http://stackoverflow.com/questions/16194442/angular-content-type-is-not-being-sent-with-http) –