2011-01-11 6 views
7

Je spécifie explicitement un POST et je ne vois pas les données de poste dans la demande et plus de spécifie qu'il a une OPTIONS.Requête POST JQuery transformée en OPTIONS. Pourquoi?

La réponse doit être un HTML spécifiant que les utilisateurs correspondent à Query au format table. J'essaie de publier et lire le code HTML pour créer une boîte de saisie auto-complète.

Ce Code Jquery:

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

Demande capturé 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 
+0

Il y a beaucoup de questions liées à ce sujet en cause dans jQuery sur SE. Voir "Connexes" Les solutions possibles sont abordées ici: http://stackoverflow.com/questions/2699277/post-data-to-jsonp – OneWorld

Répondre

10

Cela pourrait se produire si vous ne respectez pas la restriction same origin policy. 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 demande de publication. 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("Response:\n" + responseText + textStatus); 
    } 
); 
+0

Oui. J'essaye d'afficher l'URL dans une autre page Web, mais là haut domaine est même "company.com", je vérifierai si "document.domain" est même. J'ai également remarqué qu'il y a peu d'informations sur les cookies envoyées lorsque "https://internal.company.com/data/displayUserList" est déclenché à partir du navigateur. Est-il possible de les capturer et de les envoyer avec cette demande? – hashg

+0

Le protocole est-il le même? Notez que HTTP vs HTTPS viole la même politique d'origine. En ce qui concerne les cookies, ils seront automatiquement envoyés le long de la requête AJAX si ces cookies ont été définis avec une propriété de domaine égale au domaine supérieur afin qu'ils puissent être partagés entre ces domaines. –

+0

Oui, le protocole est HTTPS. J'ai remarqué que les cookies ne sont pas récupérés en dehors du problème OPTIONS. Dois-je changer quelque chose dans l'appel? – hashg

Questions connexes