3 votes

Erreur de validation HTML5 a href (NFC)

J'ai masqué tous les caractères spéciaux dans l'URL suivante, mais le w3c-validator affiche toujours une erreur. J'ai vérifié tous les tutoriels NFC mais je n'ai aucune idée de l'origine de l'erreur. Une idée ?

URL

<a href="http://www.example.de/index.php&#63;cnid&#61;efcb9a458fb823ba877ef53b7162598f&#38;ldtype&#61;grid&#38;cl&#61;alist&#38;tpl&#61;&#38;fnc&#61;executefilter&#38;fname&#61;&#38;attrfilter&#91;3a5d1ca314a5205fa7b7b3baa5d2f94e&#93;&#91;2f143d22ce421269b5c7d01a160f6541&#93;&#61;2f143d22ce421269b5c7d01a160f6541">Asche</a>

w3c-Error

Line 618, Column 441: Bad value http://www.example.de/index.php?cnid=efcb9a458fb823ba877ef53b7162598f&ldtype=grid&cl=alist&tpl=&fnc=executefilter&fname=&attrfilter[3a5d1ca314a5205fa7b7b3baa5d2f94e][2f143d22ce421269b5c7d01a160f6541]=2f143d22ce421269b5c7d01a160f6541 for attribute href on element a: Illegal character in query component.

…21269b5c7d01a160f6541&#93;&#61;2f143d22ce421269b5c7d01a160f6541">Asche</a></li>

Syntaxe de la référence IRI

Any URL. For example: /hello, #canvas, or http://example.org/. Characters should be represented in NFC and spaces should be escaped as %20.

3voto

Jukka K. Korpela Points 71599

Les personnages [ y ] doivent être %-encodés dans une URL, comme %5B y %5D selon STD 66 (où l'annexe A contient un résumé de la syntaxe, montrant que les crochets sont des caractères "gen-delims", qui ne sont pas autorisés dans une partie de requête, sauf en tant que %-encodé).

Vous auriez dû poster un document HTML, puisque c'est sur ce type de document que les validateurs travaillent. Le document de test suivant (qui valide) contient l'URL que vous mentionnez, correctement encodée :

<!doctype html>
<meta charset=utf-8>
<title></title>
<a href=
"http://www.example.de/index.php?cnid=efcb9a458fb823ba877ef53b7162598f&amp;ldtype=grid&amp;cl=alist&amp;tpl=&amp;fnc=executefilter&amp;fname=&amp;attrfilter%5B3a5d1ca314a5205fa7b7b3baa5d2f94e%5D%5B2f143d22ce421269b5c7d01a160f6541%5D=2f143d22ce421269b5c7d01a160f6541">foo</a>

En dehors de cela, l'URL ne fonctionne pas ; elle provoque une réponse "Multiple Choices", ce qui est plutôt étrange (un tel message devrait être émis lorsque le serveur effectue une négociation de contenu qui ne trouve pas d'alternative acceptable, et une liste d'alternatives devrait être présentée ; mais ici il s'agit plus ou moins d'une situation "Not Found").

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