Dans un appel AJAX, 302 n'est pas suivie
Je suis en utilisant jQuery 1.6.2 pour faire un POST requête AJAX vers une page sur le même domaine. Cette page fait une redirection 302 vers une autre page.
Maintenant, sur ma machine locale ce bon travail, mais sur notre serveur de production, la redirection n'est jamais suivie et dans le Chrome de l'inspecteur de la demande est dit être "annulé".
Si je visite la même page sans la participation du javascript, tout fonctionne bien, et comme je l'ai dit l'AJAX fonctionne sur ma machine locale, mais pas sur le serveur de production.
Personne ne sait ce qui peut provoquer cela?
Il y a quelques différences entre les serveurs (OS X, Apache2, PHP5.3.6, HTTP sur l'ordinateur local, Ubuntu, Lighttpd, PHP5.3.3, HTTPS sur la production), mais aucun qui pour moi ne fait aucune différence.
- Je suppose que le 302 redirige vers une autre ressource sur le même domaine?
- En effet. S'avère qu'il y a eu un bug dans kohana bien que l'origine de la redirection HTTP au lieu de HTTPS. Qui doit avoir causé le navigateur pour annuler la demande.
- Excellent. Ajouter que comme une réponse ci - dessous-dans deux jours, vous serez en mesure d'accepter votre réponse comme correcte de sorte que les gens qui ont des problèmes similaires à l'avenir de la trouver.
- Il a obtenu, merci!
Vous devez vous connecter pour publier un commentaire.
S'avère un bogue dans le code de redirection origine de la redirection d'aller à l'adresse http://tandis que la page demandée a été https://. Que fait le navigateur refuser de suivre la redirection.
questions suivantes liées à votre réponse. vous pouvez trouver la réponse à partir de liens ci-dessous.
Attraper 302 TROUVÉ en JavaScript
Comment gérer une demande de redirection après un appel Ajax jQuery
xhr.status == 302
ne devrait jamais se produire que le 302 seront gérées par le navigateur, qui sera alors seul le retour un 200 ou un autre code d'erreur pour le JS, je considère que cette contre-productive conseils. Je vais supprimer l'-1 cependant, comme vous ne les lier à d'autres questions. Je doit fournir une réponse différente.Je considère cela comme un serveur et non côté client. Le navigateur est correct de ne pas suivre les redirections vers d'
http
quand il fait une requête ajax parhttps
, ce serait une faille de sécurité.J'ai réalisé que j'ai été en utilisant relative chemins, comme
HttpResponseRedirect('/path/to/')
. Sur un calque, l'url a été ajouté au début de lahttp://
préfixe et qu'est ce que le navigateur a reçu:http://example.com/path/to/
Vous devez vous assurer que le
Location
est envoyé dans l'en-tête de réponse avec un chemin d'accès complet, y compris lahttps://
.Basé sur cette réponse: https://stackoverflow.com/a/8752354/698289 j'ai trouvé le code suivant pour être très utile:
Alors que vous venez de fournir JSON telles que les suivantes:
Et la
ajaxComplete
fera en sorte de rediriger le navigateur.Être conscient que
$.ajax('complete')
déclenche APRÈS$.ajax('success')
ou$.ajax('error')