Nous concevons un système d'URL qui spécifiera les sections d'application sous forme de mots séparés par des barres obliques. Plus précisément, c'est dans GWT, donc les parties pertinentes de l'URL seront dans le hachage (qui sera interprété par une couche de contrôleur côté client):
http://site/gwturl#section1/section2
Certaines sections peuvent nécessiter des attributs supplémentaires, que nous aimerions spécifier avec un :
, afin que les parties de section de l'URL soient sans ambiguïté. Le code se diviserait d'abord sur /
, puis sur :
, comme ceci:
http://site/gwturl#user:45/comments
Bien sûr, nous le faisons pour la convivialité des URL, nous souhaitons donc nous assurer qu'aucun de ces caractères qui auront une signification particulière ne sera encodé par les navigateurs, ou tout autre système, et se retrouvera avec une URL comme ce:
http://site/gwturl#user%3A45/comments <--- BAD
Est-ce que l'utilisation des deux points de cette manière est sûre (ce que je veux dire ne sera pas automatiquement encodée) pour les navigateurs, les systèmes de signets, même le code Javascript ou Java?
#!
pour indiquer que les pages sont avec état - voir googlewebmastercentral.blogspot.com/2009/10 / ... (Cette proposition a été respectée par de gros utilisateurs AJAX tels que Facebook)Réponses:
J'ai récemment écrit un encodeur d'URL, donc c'est assez frais dans mon esprit.
Tous les caractères de la partie fragment (
user:45/comments
) sont parfaitement légaux pour RFC 3986 URI .Les parties pertinentes de l' ABNF :
En dehors de ces restrictions, la partie fragment n'a pas de structure définie au-delà de celle que votre application lui donne. Le schéma, http, dit seulement que vous n'envoyez pas cette partie au serveur.
ÉDITER:
Oh!
Malgré mes affirmations sur la spécification URI, irreputable fournit la réponse correcte quand il souligne que la spécification HTML 4 restreint les noms / identificateurs d'élément .
Notez que les règles d'identifiant changent dans HTML 5 . Les restrictions d'URI s'appliqueront toujours (au moment de la rédaction de cet article, il y a des problèmes non résolus concernant l'utilisation des URI par HTML 5).
la source
:
c'est un gen-délim, pas un sous-délim.:
est dedanspchar
, qui est dedansfragment
, donc:
est autorisé. @Renesis - Wikipedia a un article sur ABNF en.wikipedia.org/wiki/ABNF Vous regardez essentiellement une liste de caractères autorisés, où/
signifie OU . Je n'ai pas fait de programmation GWT, donc je ne sais pas comment il utilise la partie fragment des URI.:
le contenu du fragment?En plus de l'analyse de McDowell sur la norme URI, rappelez-vous également que le fragment doit être un nom d'ancre HTML valide. Selon http://www.w3.org/TR/html4/types.html#type-name
Alors vous avez de la chance. ":" est explicitement autorisé. Et personne ne devrait "%" - y échapper, non seulement parce que "%" est un caractère illégal, mais aussi parce que le fragment doit correspondre au nom de l'ancre char-par-caractère, donc aucun agent ne doit essayer de les altérer de quelque manière que ce soit.
Cependant, vous devez le tester. Les standards du Web ne sont pas strictement respectés, parfois les standards sont contradictoires. Par exemple, HTTP / 1.1 RFC 2616 n'autorise pas la chaîne de requête dans l'URL de la requête, tandis que HTML en construit une lors de la soumission d'un formulaire avec la méthode GET. Celui qui est mis en œuvre dans le monde réel l'emporte à la fin de la journée.
la source
MediaWiki et d'autres moteurs wiki utilisent des deux-points dans leurs URL pour désigner les espaces de noms, sans apparemment aucun problème majeur.
par exemple http://en.wikipedia.org/wiki/Template:Bienvenue
la source
Je ne compterais pas dessus. Il sera probablement encodé en URL comme
%3A
par de nombreux agents utilisateurs.la source
De
URLEncoder
javadoc:Autrement dit,
:
n'est pas sûr.la source
Je ne vois pas Firefox ou IE8 encoder certaines des URL de Wikipédia qui incluent le caractère.
la source
Les deux points sont utilisés pour séparer le nom d'utilisateur et le mot de passe si un protocole nécessite une authentification.
la source
Colon n'est pas sûr. Vois ici
la source
Ce n'est pas un caractère sûr et est utilisé pour distinguer le port auquel vous vous connectez lorsqu'il se trouve juste après votre nom de domaine
la source