web-dev-qa-db-fra.com

Que signifie un point dans un chemin URL?

Dans une question concernant un problème jQuery Ajax , le demandeur essayait d'utiliser un . au début d'une URL relative. Je lui ai conseillé de le retirer, mais je n'ai aucune idée de ce que fait réellement un point.

Son URL relative ressemblait à ceci:

./delete-misc/test-ajax-code.php

J'ai essayé de chercher dans les RFC, sans succès. Je sais ce que fait le point en ligne de commande (Linux ou Win), il représente le répertoire courant.

Je voudrais savoir: comment cela fonctionne-t-il sur Internet dans une URL? A-t-il des utilisations conformes aux meilleures pratiques? Des explications détaillées sont les bienvenues.

36
kapa

Le segment de chemin . est généralement utilisé au début des références de chemin relatif et est supprimé pendant la résolution de référence , c'est-à-dire le processus de résolution d'une référence d'URI relative en un URI absolu:

Les segments de chemin "." et ".. ", également appelés segments de points, sont définis pour référence relative dans la hiérarchie des noms de chemin d'accès. Ils sont destinés à être utilisés au début d'une référence de chemin relatif ( Section 4.2 ) pour indiquer la relative position dans l'arborescence hiérarchique des noms. Ceci est similaire à leur rôle dans les structures de répertoires de fichiers de certains systèmes d'exploitation pour indiquer respectivement le répertoire actuel et le répertoire parent. Cependant, contrairement à un système de fichiers, ces segments de points ne sont interprétés que dans le La hiérarchie des chemins URI et sont supprimés dans le cadre du processus de résolution ( Section 5.2 ).

Il existe Supprimer les segments de points algorithmes qui décrit comment ces segments de points doivent être interprétés dans un certain contexte de chemin de base.

Dans votre cas, les deux ./delete-misc/test-ajax-code.php et delete-misc/test-ajax-code.php sont équivalents. Mais il y a des cas où un chemin relatif peut être mal interprété comme un URI absolu, par ex. avoir un : dans le premier segment de chemin comme search:foo différent de ./search:foo car le premier est un URI absolu tandis que le second est un chemin URI relatif.

37
Gumbo

UNE ./ devant l'URL est équivalent au chemin actuel. Alors ./delete-misc/test-ajax-code.php et delete-misc/text-ajax-code.php sont les deux chemins relatifs. Dans la réponse que vous avez publiée, vous avez demandé de supprimer uniquement le point, donc le chemin de /delete-misc/test-ajax-code.php se traduirait par un chemin absolu au lieu d'un chemin relatif.

Edit: encore une chose - . est le répertoire courant et .. est le répertoire parent. Comme le commente Phihag, ceux-ci devraient vraiment être évités et protégés contre dans le code. La traversée de répertoire peut être utilisée pour le mal.

6
Michael Dean