2009-06-02 3 views
11

Mit anderen Worten, spielt es eine Rolle, ob ich http://www.example.com/ oder http://wwW.exAmPLe.COm/ verwende?Ist die Bedeutung des HTTP-Hostnamens (oberer/unterer Wert) von Bedeutung?

Ich habe in letzter Zeit in seltsame Probleme mit Host-Namen gerannt: Ich habe einen Apache2.2 + PHP5.1.4 Webserver, auf den von allen Arten von Browsern zugegriffen wird. IE6 Benutzer insbesondere (insb. Wenn ihre UA Saite mit zahlreichen BHOs ​​belastet ist, kein Muster noch) scheinen Probleme zu haben Zugriff auf die Website (Cookies verschwinden, JS zu laden verweigert), wenn sie über http://www.Example.com/ Eingabe, aber nicht http://www.example.com/

I habe die HTTP und DNS RFCs, meine P3P policies, Cookie-Einstellungen und SOP überprüft; Aber nirgends habe ich schon eine Erwähnung von Domain-Namen gesehen, bei denen Groß- und Kleinschreibung eine Rolle spielt.

(ich weiß, Pfad und Query-String-Groß- und Kleinschreibung (?x=foo unterscheidet sich von ?x=Foo) und behandeln sie entsprechend, bin auf Domain-Namen in meinem Code keine Analyse/Verarbeitung tun)

Bin ich etwas falsch oder zu tun ist das ist nur ein browser + toolbar crap ich sollte umgehen?

Antwort

24

Domain-Namen sind nicht case-sensitive; Example.com wird auf dieselbe IP-Adresse wie eXaMpLe.CoM aufgelöst. Wenn ein Webserver oder ein Browser den Header Host als Groß- und Kleinschreibung behandelt, ist das ein Fehler.

+2

Sie haben recht - eines der Caching-Skripts hat Domain-Namen zwischen Groß- und Kleinschreibung unterschieden und die Probleme verursacht. Das Erzwingen von Hostnamen in Kleinbuchstaben scheint es zu beheben. – Piskvor

+5

Dann ist dieses Skript stark beschädigt und muss behoben werden. – bortzmeyer

0

Nein, es gibt keine Groß-/Kleinschreibung in Bezug auf den Protokollspezifizierer.

You can see this in the RFC for URLs.

2.1. Die Hauptteile von URLs

Schemanamen bestehen aus einer Folge von Zeichen. Die Kleinbuchstaben "a" - "z", Ziffern und die Zeichen plus ("+"), Punkt (".") Und Bindestrich ("-") sind erlaubt. Für die Ausfallsicherheit sollten Programme, die URLs interpretieren, Großbuchstaben als gleichwertig behandeln zu Kleinbuchstaben in Schema Namen (z. B. erlauben "HTTP" sowie "http").

+1

Warum werden immer wieder veraltete Spezifikationen zitiert? Seufzer! –

5

Nein, das sollte keinen Unterschied machen.

Überprüfen Sie die URL RFC-Spezifikation (http://www.ietf.org/rfc/rfc1738.txt). Aus dem Bereich 2.1:

Für Elastizität, Programme zu interpretieren URLs sollten Großbuchstaben als äquivalent zu Kleinbuchstaben in Schema Namen

+1

+1 für die Referenz :) – cgp

+5

Wir diskutierten nicht den Namen des Systems. (Auch: RFC 1738 ist alt und wurde seitdem mehrfach aktualisiert; der aktuelle RFC ist 3986). –

+0

Laut der oben aufgeführten Spezifikation ([http://www.ietf.org/rfc/rfc3986.txt][1]). 18 Von Seite: > Obwohl Host-Groß- und Kleinschreibung ist, Hersteller und Normalisierern > sollten für registrierte Namen und hexadezimalen > Adressen aus Gründen der Einheitlichkeit verwenden Klein für, während nur Groß mit > Buchstaben Prozent-Kodierungen. [1]: http://www.ietf.org/rfc/rfc3986.txt – geedew

1

Nach http://tools.ietf.org/html/rfc1035 behandeln:

Für alle Teile des DNS, die Teil des offiziellen Protokolls sind, alle Vergleiche zwischen Zeichenketten (z. B. Etiketten, Domänennamen usw.) werden in einer case-insensitive Weise durchgeführt. Derzeit ist diese Regel in ohne Ausnahme durch das Domain-System zwingen.

Es wird dann gesagt, dass dies in der Zukunft ändern könnte. Ich denke, es ist sicher anzunehmen, dass die COM-Domäne die Groß-/Kleinschreibung nicht beachtet, aber andere Domänen, die die Verwendung von Nicht-ASCII-Zeichen ermöglichen, können sich unterscheiden.

+0

.COM akzeptiert IDN auch ... Und IDN ändert nichts an der Tatsache, dass Domain-Namen case-insensitive so café.com und CAFÉ.com sind die gleichen. – bortzmeyer

4

Da Sie Ihre Frage als praktische Frage formuliert haben und dann ein Problem der realen Welt beschrieben haben, lautet die Antwort eigentlich: JA.

Die anderen Antworten sind korrekt über das, was die RFC-Spezifikation über Hostnamen sagt. Technisch sollten sie nicht zwischen Groß- und Kleinschreibung unterscheiden. (In der Tat, die ältere Konvention war, dass die Top-Level-Domain (TLD) sollte in Großbuchstaben sein ... wie "apple.COM").

Aber in der realen Welt, reife Software wie OS Resolver und großen Browsern dies richtig. Irgendeine Art von sekundärem Code könnte mit diesem Fehler umgehen und dich durcheinander bringen.