La façon de coder les périodes pour les Url en Javascript?
La DONC post ci-dessous est exhaustive, mais tous les trois méthodes décrites ne parviennent pas à coder pour des périodes.
Post: Encoder l'URL en JavaScript?
Par exemple, si je lance les trois méthodes (c'est à dire, d'évasion, encodeURI, encodeURIComponent), aucun d'entre eux codent pour des périodes.
Donc "de la nourriture.magasin" sort "de la nourriture.store", qui rompt l'URL. Il rompt l'URL parce que l'application Rails ne peut pas reconnaître l'URL valide, et affiche la page d'erreur 404. C'est peut-être une erreur de configuration dans les Rails fichier de routes?
Quelle est la meilleure façon d'encoder les périodes de Javascript pour les Url?
- De quelle manière le fait de briser l'URL? Périodes n'ont pas à être codé pour autant que je sais.
- Merci, mise à jour de la question afin de refléter votre question.
- J'ai ajouté "ruby-on-rails" à vos tags - ce n'est pas une URL de problème, mais un Rails de problème ou quelque chose de spécifique à votre application.
- Une autre raison valable pour échapper à des périodes de l'url sélecteur de Apache Sling (utilisé par Jour CQ): sling.apache.org/documentation/the-sling-engine/...
Vous devez vous connecter pour publier un commentaire.
Périodes ne devrait pas casser l'url, mais je ne sais pas comment vous utilisez de la période, donc je ne peux pas vraiment dire. Aucune des fonctions que je sais de coder le". " pour une url, ce qui signifie que vous devrez utiliser votre propre fonction pour coder le '.' .
Vous pourriez base64 encode les données, mais je ne crois pas qu'il existe de façon native à le faire en js. Vous pouvez aussi remplacer toutes les périodes avec leur équivalent ASCII (%2E) sur le client et côté serveur.
Fondamentalement, il n'est pas généralement nécessaire pour coder '.', donc, si vous devez le faire, vous aurez besoin de venir avec votre propre solution. Vous pouvez également faire d'autres tests pour être certain que le '.' va casser les url.
hth
Je sais que c'est un vieux thread, mais je ne vois nulle part ici, des exemples d'Url qui ont été à l'origine du problème original. J'ai rencontré un problème similaire moi-même il y a quelques jours avec une application Java. Dans mon cas, la chaîne à la période était à la fin de l'élément de chemin de l'URL par exemple.
http://myserver.com/app/servlet/test.string
Dans ce cas, le Printemps de la bibliothèque que j'utilise a été seulement de me passer le "test" de la partie de la chaîne à la méthode annotée paramètre de mon contrôleur de classe, probablement parce que c'était le traitement de l '.chaîne " comme une extension de fichier et les arracher. C'est peut-être la même question sous-jacente à l'origine du problème ci-dessus?
De toute façon, j'ai été en mesure de contourner ce problème en ajoutant une barre oblique de fin de l'URL. Juste jeter ce qui existe dans le cas où il est utile à quelqu'un d'autre.
Jean
J'ai eu ce même problème lorsque mon .htaccess était en rupture avec les valeurs d'entrée avec .
Depuis je n'ai pas envie de changer ce que l' .htaccess était en train de faire, j'ai utilisé cette solution:
cela ne fait tout le codage standard remplace alors . il y a d'équivalent ascii %2E. PHP convertit automatiquement en arrière pour . dans l' $_REQUEST valeur mais le .htaccess ne voit pas cela comme une période donc, les choses sont toutes bonnes.
Périodes n'ont pas à être codé dans l'adresse Url. Ici est la RFC à regarder.
Si une période est de "casser" quelque chose, il se peut que votre serveur est de faire sa propre interprétation de l'URL, ce qui est une belle chose à faire, bien sûr, mais cela signifie que vous devez venir avec de schéma de codage de votre propre lorsque votre propre métacaractères besoin de s'échapper.
J'ai eu la même question, et peut-être que ma solution peut aider quelqu'un d'autre dans l'avenir.
Dans mon cas, l'url a été généré à l'aide de javascript. Les périodes sont utilisés pour séparer les valeurs dans l'url (la fronde des sélecteurs), de sorte que les sélecteurs eux-mêmes n'étaient pas autorisés à avoir des périodes.
Ma solution a été de remplacer toutes les périodes de l'entité html comme Figure 1:
Figure 1: Solution
Si ses possible à l'aide d'un .fichier htaccess rendrait vraiment cool et facile. Il suffit d'ajouter un \ avant de la période. Quelque chose comme:
\.
C'est un rails de problème, voir Rails RESTE de routage: les points de la ressource ID de l'élément pour une explication (et le rail de guide de routage, Sec. 3.2)
J'ai eu des problèmes avec .s dans le reste de l'api url. C'est le fait qu'ils sont interprétés comme des extensions qui, à sa façon, fait sens. L'évitement ne pas les aider car ils sont sans échappement avant l'appel (comme déjà mentionné). L'ajout d'une fuite /n'a pas aider non plus. J'ai contourné ce problème en passant la valeur comme un argument nommé à la place. par exemple, l'api/Id/Texte.chaîne/api Id?arg=Texte.chaîne de caractères. Vous aurez besoin de modifier le routage sur le contrôleur mais le maître lui-même peut rester la même.