Le Codage d'URL avec des caractères de Soulignement dans le Nom de Répertoire?
Nous avons exécuté dans un étrange argument où je travaille, et j'ai peut-être tort sur ce point, c'est pourquoi je demande.
Notre logiciel génère un répertoire sur un serveur Apache qui remplace un trait de soulignement avec un %5F dans le nom du répertoire.
Par exemple, si le nom du répertoire a été répertorié comme une chaîne de caractères dans notre logiciel, ce serait: "andy_test", mais alors, quand le logiciel génère le répertoire sur le serveur Apache, il serait devenu "andy%5Ftest". Malheureusement, lorsque vous accédez à l'url sur le serveur, il finit par devenir "andy%255Ftest".
En quelque sorte ce qui semble mauvais pour moi, une fois de plus la progression est la suivante:
- andy_test <- (comme une chaîne de caractères dans le logiciel)
- andy%5Ftest <- (inscrit au répertoire sur le serveur)
- andy%255Ftest <- (doit être utilisé lors de l'appel le même répertoire que l'URL sur le serveur à partir d'un navigateur web.)
Je suis en supposant que "%5" est l'encodage de caractère de soulignement, et que "de 25%" est l'encodage de "%".
Maintenant, il me semble que la façon que le nom du répertoire doit être répertorié sur le serveur serait tout simplement andy_test et si vous étiez à l'aide d'une URI codé alors peut-être que vous vous retrouvez avec la "andy%5Ftest" pour accéder au répertoire sur le serveur apache.
J'ai demandé au gars sur le backend à ce sujet, et ils ont dit qu'ils étaient juste: "l'encodage de tout ce qui n'était pas une lettre ou un nombre.
Donc je suppose que je suis un peu confus sur ce point. Pouvez-vous me dire qui est droit, et de m'orienter vers quelques informations sur pourquoi?
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas encoder les noms de répertoire que vous créez (comme vous l'avez suggéré). L'encodage ne devrait se produire que lors de la dernière étape où il est distribué dans le navigateur. C'est pourquoi vous êtes en terminant par 'double' encodage: %25 % et 5F est le vestige de la première encodage de caractère de soulignement.
Notez également que vous n'avez pas besoin de coder des caractères de soulignement selon rfc1738.
Il y a un double encodage qui se passe dans ce que vous montrez. Deux étapes doivent être suffisamment:
andy_test
est à la fois la chaîne de caractères dans le logiciel et le nom du répertoire ou d'un script dans le système de fichiers (la ressource du serveur web accède)andy%5Ftest
estandy_test
URL codée. Cette chaîne doit le navigateur qu'il utilise (ce n'est pas vraiment nécessaire dans le trait de soulignement cas, mais peut-être dans d'autres cas).andy%255ftest
est justeandy_test
URL encodé deux fois, ce qui n'a pas de sens, il devrait y avoir aucun besoin. Il suffit de décider OÙ vous pourrez faire de l'encodage. Si vous le faites, tant au niveau du code et du serveur web de niveau c'est ce qui peut arriver et le résultat est la rupture de liens, sauf si vous êtes décodage deux fois, ce qui n'est pas vraiment nécessaire ou pas sain d'esprit.