328 votes

L'URL doit-il être sensible à la casse ?

J'ai remarqué que

HTTP://STACKOVERFLOW.COM/QUESTIONS/ASK

et

http://stackoverflow.com/questions/ask

les deux fonctionnent bien - en fait, le précédent est converti en minuscules.

Je pense que cela est logique pour l'utilisateur.

Si je regarde sur Google, cette URL fonctionne bien :

http://www.google.com/intl/en/about/corporate/index.html  

mais celui-là, avec "ABOUT", ne fonctionne pas :

http://www.google.com/intl/en/ABOUT/corporate/index.html   

L'URL doit-elle être sensible à la casse ?

16 votes

À mon avis, les URL ne devraient jamais être sensibles à la casse, car cela ne fait que compliquer la vie des personnes qui les utiliseront.

25 votes

La question "Les urls doivent-elles être sensibles à la casse ?" est une mauvaise question car elle fait appel à l'opinion. Une meilleure question serait plutôt : "POURQUOI les urls sont (ou ne sont pas) sensibles à la casse ?", ou "Pourquoi certaines urls sont-elles sensibles à la casse et d'autres pas ?".

0 votes

Mais pour une réponse possible, regardez La nouvelle norme URL du WHATWG qui a été adopté par node.js .

331voto

jldupont Points 31331

Selon le rapport du W3 " HTML et URLs ", ils devraient :

Il peut y avoir des URL, ou des parties d'URL, où la casse n'a pas d'importance. mais il n'est pas toujours facile de les identifier. Les utilisateurs doivent toujours considérer que Les URLs sont sensibles à la casse.

113 votes

Je suppose que "soyez libéral dans ce que vous acceptez et conservateur dans ce que vous envoyez" (langage IETF) serait ma ligne directrice.

11 votes

La directive du W3 est raisonnable. Elle indique simplement qu'il ne faut pas présumer de la façon dont le serveur traite l'URL que vous soumettez. C'est au serveur de traiter l'URL de la demande. La plupart des serveurs web sont unix/linux, ce qui signifie que la plupart des serveurs web sont sensibles à la casse.

43 votes

Le W3 dit que les UTILISATEURS devraient supposer que les serveurs sont sensibles à la casse, mais ne donne pas de recommandation pour les SERVEURS.

139voto

jdh8 Points 351

Tous " insensible Les "s" sont mis en gras pour plus de lisibilité.

Les noms de domaine sont des cas insensible en fonction de RFC 4343 . Le reste de l'URL est envoyé au serveur via la méthode GET. Cette méthode peut être sensible à la casse ou non.

Prenez cette page par exemple, stackoverflow.com reçoit la chaîne GET /questions/7996919/doivent-ils être sensibles à la casse ? en envoyant un document HTML à votre navigateur. Stackoverflow.com est un cas insensible car il produit le même résultat pour /QUEStions/7996919/Should-url-be-case-sensitive (en anglais) .

En revanche, Wikipédia respecte la casse, sauf pour le premier caractère du titre. Les URLs https://en.wikipedia.org/wiki/Case_sensitivity et https://en.wikipedia.org/wiki/case_sensitivity mène au même article, mais https://en.wikipedia.org/wiki/CASE_SENSITIVITY retourne 404.

7 votes

Wikipédia est en fait très indulgente en ce qui concerne la sensibilité à la casse dans les cas où les utilisateurs pensent qu'un mot devrait être dans une casse ou une autre, mais c'est plutôt dû aux TOC... pardon, à la nature attentionnée de ses rédacteurs. Ses URL sont techniquement sensibles à la casse, cependant.

17 votes

C'est parce que la partie sémantique, lisible, de l'URL d'une question dans stackoverflow ne l'identifie pas, elle est identifiée par 7996919 . La partie sémantique de l'URL n'est là qu'à des fins de référencement.

6 votes

En fait, aussi https://stackoverflow.com/questions/7996919/should-BLABLA-be-or-NOT-to-be travaux. En effet, le serveur de stackoverflow.com utilise uniquement l'ID de la question pour l'identifier et renvoyer l'URL et la page HTML correctes.

79voto

Jim Nutt Points 741

Cela dépend de l'OS d'hébergement. Les sites hébergés sous Windows ont tendance à ne pas tenir compte de la casse, car le système de fichiers sous-jacent ne la prend pas en compte. Les sites hébergés sur des systèmes de type Unix ont tendance à être sensibles à la casse car leurs systèmes de fichiers sous-jacents sont généralement sensibles à la casse. La partie du nom d'hôte de l'URL est toujours insensible à la casse, c'est le reste du chemin qui varie.

1 votes

Oui, comme celui-ci l'a douloureusement découvert lors de requêtes http vers des fichiers sur un serveur ftp Unix.

1 votes

Il serait plus exact de dire "dépend du serveur" au sens général, car servir des fichiers n'est pas la seule façon de répondre aux requêtes HTTP.

41voto

Bhavin Shah Points 111

La partie du nom de domaine d'une URL n'est pas sensible à la casse puisque le DNS ignore la casse : http://en.example.org/ et HTTP://EN.EXAMPLE.ORG/ Les deux ouvrent la même page.

Le chemin est utilisé pour spécifier et éventuellement trouver la ressource demandée. Il est sensible à la casse, bien qu'il puisse être traité comme tel par certains serveurs, notamment ceux basés sur Microsoft Windows.

Si le serveur est sensible à la casse et que http://en.example.org/wiki/URL est correcte, alors http://en.example.org/WIKI/URL ou http://en.example.org/wiki/url affichera une page d'erreur HTTP 404, à moins que ces URL ne pointent elles-mêmes vers des ressources valides.

5 votes

Cette réponse a la seule formulation correcte "il est sensible à la casse, bien qu'il puisse être traité comme insensible à la casse". Seule réponse valable.

0 votes

@DanFromGermany, le chemin est sensible à la casse peut être déduit vaguement de ici "Les URL en général sont sensibles à la casse (à l'exception des noms de machine).Il peut y avoir des URL, ou des parties d'URL, où la casse n'a pas d'importance, mais leur identification peut ne pas être facile." Mais, il est ambigu d'en déduire cela. Comme mentionné dans un commentaire ci-dessus, la RFC1738 ne discute pas si les parties de l'URL autres que le schéma doivent être interprétées comme sensibles à la casse ou non. Avez-vous un lien qui clarifie les parties de l'URL qui sont sensibles à la casse ?

2 votes

@garnet De RFC3986 6.2.2.1. Normalisation des cas : Lorsqu'un URI utilise des composants de la syntaxe générique, les règles d'équivalence de la syntaxe des composants s'appliquent toujours, à savoir que le schéma et l'hôte sont insensibles à la casse et doivent donc être normalisés en minuscules. Par exemple, l'URI HTTP://www.EXAMPLE.com/ est équivalent à http://www.example.com/ . Les autres composants syntaxiques génériques sont supposés respecter la casse. à moins que le régime n'en dispose autrement".

18voto

Kenneth Garza Points 797

Je ne suis pas un fan des vieux articles, mais comme il s'agit de l'une des premières réponses à ce problème particulier, j'ai ressenti le besoin de clarifier quelque chose.

Comme l'indique la réponse de @Bhavin Shah, la partie domaine de l'url n'est pas sensible à la casse, donc

http://google.com 

et

http://GOOGLE.COM 

et

http://GoOgLe.CoM 

sont tous les mêmes, mais tout ce qui suit la partie du nom de domaine est considéré comme sensible à la casse.

donc...

http://GOOGLE.COM/ABOUT

et

http://GOOGLE.COM/about

sont différentes.

Remarque : je parle "techniquement" et non "littéralement" dans de nombreux cas, la plupart des serveurs sont configurés pour traiter ces éléments de la même manière, mais il est possible de les configurer pour qu'ils ne soient PAS traités de la même manière.

Les différents serveurs gèrent cela différemment et dans certains cas, ils doivent respecter la casse. Dans de nombreux cas, les valeurs des chaînes de requête sont codées (comme les identifiants de session ou les données codées en Base64 qui sont transmises comme valeur de chaîne de requête). Ces éléments sont sensibles à la casse de par leur nature et le serveur doit donc les traiter en respectant la casse.

Donc, pour répondre à la question "les serveurs doivent-ils" être sensibles à la casse lorsqu'ils saisissent ces données, la réponse est "oui, très certainement".

Bien sûr, tout ne doit pas être sensible à la casse, mais le serveur doit savoir ce qu'il en est et comment gérer ces cas.


Le commentaire de @Hart Simha dit en gros la même chose. Je l'ai manqué avant de poster, donc je veux donner le crédit où le crédit est dû.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X