Sind IRIs als HTML-Attributwerte gültig?

8

Ist die Verwendung von IRIs mit Nicht-ASCII-Zeichen als Attributwerte (z. B. für href -Attribute) anstelle von URIs zulässig? Gibt es Unterschiede zwischen den HTML-Varianten (HTML und XHTML, 4 und 5)? Mindestens RFC 3986 scheint zu implizieren, dass dies nicht der Fall ist.

Mir ist klar, dass es wahrscheinlich sicherer wäre (in Bezug auf ältere und IRI-unbewusste Software), prozentuelle Kodierung zu verwenden, aber ich suche nach einer definitiven Antwort in Bezug auf den Standard.

Bisher habe ich einige Tests mit dem W3C-Validator durchgeführt, und nicht-gescannte Unicode-Zeichen in URIs lösen keine Warnungen aus oder Fehler mit HTML 4/5 und XHTML 4/5 Doctypes (aber die Abwesenheit von Fehlermeldungen bedeutet natürlich nicht die Abwesenheit von Fehlern).

Zumindest unterstützt chrome auch unformatierte UTF-8-IRIs, aber prozentual-entkoppelt sie, bevor eine HTTP-Anfrage ausgelöst wird. Außerdem scheint mein Webserver (lighttpd) UTF-8-Zeichen sowohl in ihrer prozentcodierten als auch in ihrer uncodierten Form in einer HTTP-Anfrage zu unterstützen.

    
lxgr 28.12.2012, 19:35
quelle

2 Antworten

6

HTML 4.01 ist einfach genug. Unterschiedliche Attribute haben unterschiedliche Regeln, was sie beinhalten können. Wenn es sich jedoch um das href-Attribut in einem <a> -Element handelt, dann ist HTML 4-Spezifikation, Abschnitt B.2.1 Nicht-ASCII-Zeichen in URI-Attributwerten lautet:

  

... der folgende href-Wert ist unzulässig:

     

<A href="http://foo.org/Håkon">...</A>

HTML5 ist anders. Es heißt IRIs sind gültig, wenn sie einige zusätzliche Bedingungen erfüllen. >

  

Eine URL ist eine gültige URL, wenn mindestens eine der folgenden Bedingungen zutrifft   hält:

     
  • Die URL ist eine gültige URI-Referenz [RFC3986].

  •   
  • Die URL ist eine gültige IRI-Referenz und hat keine Abfragekomponente. [RFC3987]

  •   
  • Die URL ist eine gültige IRI-Referenz und ihre Abfragekomponente enthält keine nicht-gescannten Nicht-ASCII-Zeichen. [RFC3987]

  •   
  • Die URL ist eine gültige IRI-Referenz und die Zeichencodierung des Dokuments der URL ist UTF-8 oder eine UTF-16-Codierung. [RFC3987]

  •   

XHTML 1.x folgt denselben Regeln wie HTML 4.01.

XHTML5 ist dasselbe wie HTML5.

    
Alohci 29.12.2012, 02:22
quelle
2

Lesen Sie im Zweifelsfall die offiziellen HTML-Spezifikationen für die endgültigen Antworten.

HTML 4 unterstützt überhaupt keine IRIs. Sie müssen als URIs nach RFC 3987 Section 3.1 codiert sein oder Nicht-ASCII-URI-Daten als UTF- codieren. 8 mit prozentualer Kodierung pro HTML4 Abschnitt B.2.1

HTML 5 unterstützt sowohl URIs als auch IRIs an allen Stellen, an denen URLs erlaubt sind, pro HTML5 Abschnitt 2.6 .

    
Remy Lebeau 29.12.2012 02:30
quelle

Tags und Links