7 votes

Requête POST jQuery se transformant en OPTIONS. Pourquoi ?

Je spécifie explicitement un POST et je ne vois pas les données postées dans la Requête et de plus je spécifie qu'il a une OPTIONS.

La réponse devrait être un HTML spécifiant les utilisateurs correspondants à la requête sous forme de tableau. Je tente de poster et de lire le HTML pour créer une boîte de saisie automatique.

Voici le code Jquery :

$.post('https://internal.company.com/data/displayUserList',
    { Email: "", Name: "%GEORGE%"}, 
    function(responseText, textStatus) {
        console.log("Réponse:\n" + responseText + textStatus)
    }
);

Requête capturée par FireBug1.6.1 (Firefox)

OPTIONS /data/displayUserList HTTP/1.1
Host: internal.company.com
User-Agent: Mozilla/5.0 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST

10voto

Darin Dimitrov Points 528142

Cela pourrait se produire si vous violez la restriction de la politique du même origine. L'en-tête de requête Access-Control-Request-Method me fait penser que c'est le cas. Je vois que vous spécifiez une adresse complète https://internal.company.com/data/displayUserList dans votre requête POST. Assurez-vous que la page hébergeant ce script provient également de https://internal.company.com. Le mieux serait d'utiliser une adresse relative :

$.post('/data/displayUserList', { Email: "", Name: "%GEORGE%" }, 
    function(responseText, textStatus) {
        console.log("Réponse:\n" + responseText + textStatus);
    }
);

0voto

Fabian Rios Points 140

Si vous essayez d'appeler un serveur différent dans un autre domaine, la stratégie pour surmonter cela devrait résider dans le backend pour permettre au serveur d'autoriser les appels depuis un domaine frontend différent et, dans ce cas, vous ne devriez pas vous casser la tête en essayant d'ajuster cela dans le frontend.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X