11
votes

JavaScript modifiant le paramètre GET sans rediriger

Comment puis-je simplement changer le paramètre d'obtention sans rediriger? XXX

Toute solution? Ou réponse est non, si son non, veuillez écrire un gros no.


7 commentaires

Ajax Objectif, pour garder Ajax Travailler bien et laisser l'utilisateur partager le lien avec d'autres si elles veulent


Le paradigme standard avec Ajax est d'utiliser l'ancre au lieu de la chaîne de requête. J'irais avec le flux.


Ya, mais c'est un travail supplémentaire pour détecter la valeur dans l'ancre et le charger et si JavaScript était désactivé par l'utilisateur, vous devez également rendre l'URL et voir si une variable est dans l'étiquette d'ancrage, si elle est, puis assignez-la. De cette façon, il sera disponible pour JavaScript ou sans JavaScript. En d'autres termes, c'est beaucoup de travail supplémentaire lol.


Si JS est désactivé, comment changez-vous la chaîne de requête ou l'ancre en premier lieu? Peut-être devriez-vous expliquer pour utiliser ce qu'il est que vous essayez exactement d'atteindre.


Comme si je partage un lien avec vous www.domain.com/#after=20 .. JavaScript peut le rendre et l'affichage, mais laissez-vous plutôt que Javascript randler, je laisserais PHP Render intimer de JavaScript et d'afficher.


Vous êtes donc disposé à mettre en œuvre la même logique de rendu du côté client à l'aide de Ajax et du côté serveur? N'est-ce pas un peu excessive et peut-être une optimisation inutile? Pourquoi réduisez-vous le travail du client? Il est préférable de réduire la charge du serveur. Faites juste autant que vous pouvez sur le côté du client.


Oui, vous avez raison, mais parfois pour quelque chose, vous devez faire les deux, ce serait une bonne façon de le faire. Vous ne pouvez pas simplement laisser tout sur JS, je préfère les deux. Spécialement à cause des moteurs de recherche!


6 Réponses :


1
votes

euh, non - Si vous modifiez le paramètre URL, votre navigateur chargera la nouvelle page.


1 commentaires

Pas nécessairement ... Si le serveur renvoie un 204, le navigateur restera sur la même page.



1
votes

Vous ne pouvez pas modifier le querystring (c.-à-d. la partie qui stoine avec le?) sans recharger la page du serveur. Vous pouvez toutefois utiliser des ancrages de page tels que http://www.example.com/page.html#anchorname pour affecter l'URL sans recharger une page à partir du serveur.


0 commentaires

11
votes

Mise à jour

Comme il s'agit de la réponse acceptée et n'est plus vraie , se référer à Cette duplicata Question pour des informations à jour.

La réponse originale suit:


Non

Vous pouvez approcher la partie d'ancrage de la URL accessible par la propriété hachage de l'emplacement objet xxx


2 commentaires

J'aime mieux la réponse @ Ates-Gory, mais elle n'est pas soutenue par tous les navigateurs, très malheureusement. De plus, il ne sera pas un risque de sécurité, si une personne modifie la chaîne de requête, ce n'est pas comme la personne qui change le chemin ou le domaine complet. Même si l'utilisateur peut changer le chemin, cela ne signifie pas son risque de sécurité, car le domaine serait toujours le même, à moins que son site de blog.


J'aime ça, mais vous devez être conscient que la valeur # n'est jamais envoyée au serveur Stackoverflow.com/Questions/774136/...



6
votes

Si votre objectif est d'utiliser la chaîne de requête pour stocker un état pouvant être restauré à partir d'un signet, vous devez utiliser des ancrages à la place.

Cependant, si vous devez modifier la chaîne de requête pour une raison quelconque, en réalité il y a un moyen . Cependant, je n'approuve pas cela. Je le mentionne simplement pour la complétude.

Lorsqu'un serveur renvoie un 204 pas de contenu réponse, la plupart des navigateurs ne feront rien - je ne tentera même pas de transition vers une autre page ni même effacer la page actuelle. Ce que vous pouvez faire, c'est que le backend vient d'émettre une réponse 204 lorsqu'une demande est faite à la même page qui a été servie, avec une modification des paramètres de requête.


5 commentaires

Donc, cette méthode dépendra vraiment d'un navigateur, si le navigateur se redirige, alors il n'y a aucun moyen de l'arrêter .. Droite? Je peux définir 204 réponse, seulement si je connais les dessins


Vous pouvez supposer en toute sécurité que tous les navigateurs raisonnablement modernes se comportent de la même manière - c'est-à-dire. Restez sur la même page.


Avez-vous été testé sur les derniers navigateurs?


Je me souviens de l'avoir à travailler sur Firefox et c'est-à-dire. Vous devez certainement le tester vous-même pour être sûr. Mais encore une fois, je vous ai imploré d'utiliser des ancrages à la place! :)


Essayé cela dans Safari 4, il efface la chaîne de requête lorsqu'il reçoit la réponse 204.



0
votes

Vous ne pouvez pas faire cela car ce serait un risque de sécurité si vous le pouviez ... si les pages pourraient modifier la valeur dans la barre d'URL, il serait facile de mettre en place une page par un phisher pour modifier cette valeur à semble être une page sur le site Web de votre banque.


4 commentaires

Il y a une grande différence entre changer la chaîne de requête et changer le reste du chemin. Si votre nom d'hôte actuel ne trompe personne, il ne va pas tromper personne lorsque vous le modifiez, surtout parce que vous pouvez toujours le changer et contrôler ce qui est de la sortie même si elle allait sur le serveur pour récupérer la nouvelle URL.


Comme je l'ai dit ci-dessous: j'aime mieux la réponse @ Ates-Goral, mais elle n'est pas soutenue par tous les navigateurs, très malheureusement. De plus, il ne sera pas un risque de sécurité, si une personne modifie la chaîne de requête, ce n'est pas comme la personne qui change le chemin ou le domaine complet. Même si l'utilisateur peut changer le chemin, cela ne signifie pas son risque de sécurité, car le domaine serait toujours le même, à moins que son site de blog.


Je ne pense pas vraiment que cela devrait être à la hauteur du navigateur de décider quelles parties de l'URL dans la barre d'adresse SON SAFFIER pour changer ou non ... C'est une sorte de fonctionnalité mineure idiote pour un navigateur à mettre en œuvre et vous savez que Ce serait différent entre différents navigateurs.


Ya je suis d'accord, mais le navigateur doit laisser les utilisateurs à changer le chemin (non domaines), car il préfère que tout le monde préfère faire des choses à l'aide d'Ajax et de changer de chemin est destiné à laisser simplement utiliser l'utilisateur à partager le lien avec d'autres utilisateurs pour la page actuelle. Oui, je sais que vous pouvez le faire avec le hash aussi, mais sa confusion pour les personnes de partager un lien avec le titre de différents médias, mais ils partageent une page différente, car ils ont obtenu cela de Ajax. Evidemment, il y a d'autres solutions .. mais Idéal laisserait les propriétaires du domaine changer le chemin qu'ils possèdent.



4
votes

Aujourd'hui, la réponse est oui

au moins dans HTML5, ce qui signifie que tous les grands navigateurs (IE10 +)
Internet Explorer prend en charge la poussée et le remplacement?
http://caniuse.com/#feat=history

Vous pouvez également vérifier ma réponse sur une autre question:
Comment puis-je modifier la page URL sans rafraîchir la page?


0 commentaires