2010-07-31 7 views
0

J'ai bricolé avec URL Rewriting sur mon site et corrigé la canonisation de mes URLs (donc je n'ai pas de données en double sur les moteurs de recherche, etc.) et il était recommandé de toujours supprimer/forcer la barre oblique (J'ai choisi de l'enlever) et aussi de rediriger/indexer. Donc, je mets les deux règles suivantes dans mon .htaccess pour mod_rewrite d'Apache pour ramasser:les navigateurs ne renvoient pas les données de formulaire dans l'appel ajax s'ils sont redirigés?

remove slash

RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L] 

arrière/index remove

RewriteRule ^(.*)/?index$ http://%{HTTP_HOST}/$1 [R=301,L] 

Ces travaux règles très bien dans le navigateur. Mais certaines de mes formes ajax ont cessé de fonctionner tout à coup! Je l'ai tracé à la fois dans Chrome et Firefox (Firebug) et ce qui se passe est très étrange. Dans les deux navigateurs, la page fait un appel ajax à:

<mydomain>/ajax/index (ajax params intact) --> 301 redirect to <mydomain>/ajax/ 
<mydomain>/ajax/ (ajax params are no longer sent!) --> 301 redirect to <mydomain>/ajax 
<mydomain>/ajax (ajax params again not sent) --> 200 OK but obviously script complains that params don't exist 

Quelqu'un peut-il confirmer que ce soit le cas ou suis-je perdre? Si oui, pourquoi diable se comporte-t-il comme ça? Et y a-t-il une solution appropriée pour le réparer (autre que de changer tous mes appels ajax pour ne jamais être redirigé par exemple <mydomain>/ajax)?

Merci beaucoup pour vous les gars de temps :)

Vive

Ali

Répondre

2

Le HTTP specification dit qu'un navigateur doit renverrons les paramètres ainsi que la demande redirigée pour une redirection 301. D'un autre côté, il indique également que le navigateur doit confirmer manuellement à l'utilisateur qu'il est correct de renvoyer ces paramètres à chaque fois que la demande est redirigée. Ce genre de défait le point de AJAX, si l'utilisateur obtient deux boîtes de dialogue apparaissent chaque fois qu'il soumet votre formulaire. Donc pour cette raison, si rien d'autre, je vous recommande de configurer vos scripts côté serveur afin qu'il n'y aura pas de redirections sur les appels AJAX.

En réalité, les navigateurs ont tendance à ignorer la partie de la spécification qui leur indique comment gérer une redirection sur une soumission de formulaire. Donc vous n'êtes probablement pas fou. il semble parfaitement crédible que le comportement que vous voyez est intégré intentionnellement dans les navigateurs (ou peut-être parce que quelqu'un était trop paresseux pour le coder correctement).

Questions connexes