In Webserver Testumgebungen nutze ich gern mal eine Subdomain mit einem Bindestrich/Unterstrich "_", da dort die Anzahl Subdomain recht hoch ist.
Leider musste ich heute leidig feststellen, das dies im IE beim Verwenden von Cookies zu ungeahnten Problemen führt.
Man entwickelt eine Anwendung und testet sie ausgiebig im FireFox, dann setzt man einen User davor, der diese Anwendung testet.
In den meisten Fällen nutzen die User aber einen Internet Explorer.
Schon scheiterte der erste Test beim Versuch sich einzuloggen.
Klar war, es muss an der/dem Session/Cookie liegen, nur wieso und was wesshalb.
Nach vielen Tests und Prüfungen des Codes konnte ich nichts feststellen und verzweifelte bereits.
Nahm ich den gleichen Code und testete ihn auf anderen Subdomain, lief es einwandfrei.
Eher durch Zufall, viel mir dann auf, dass der einzige Unterschied bei beiden VHost, die Syntax der Subdomain war.
Eine enthielt den Unterstrich "_" im Namen.
Entfernt man den Unterstrich aus dem Subdomainnamen, so funktioniert alles wunderbar.
Problem:
Das Setzen und Verwenden von Cookies im Internet Explorer funktioniert nicht bei Webseiten die einen Unterstrich im Subdomainnamen enthalten.
Ursache:
Der Request for Comment Standard für URLs. ( RFC 1738 )
Dort ist festgelegt, das Unterstriche in Domain-Labels, also auch in Subdomainnamen, nicht erlaubt sind.
Ausnahmsweise hält sich der IE daran und FireFox u.a. eben nicht.
Auszug aus der RFC 1738
"…
host
The fully qualified domain name of a network host, or its IP
address as a set of four decimal digit groups separated by
".". Fully qualified domain names take the form as described
in Section 3.5 of RFC 1034 [13] and Section 2.1 of RFC 1123
[5]: a sequence of domain labels separated by ".", each domain
label starting and ending with an alphanumerical character and
possibly also containing "-" characters. The rightmost domain
label will never start with a digit, though, which
syntactically distinguishes all domain names from the IP
addresses.
…"
Lösung:
Subdomain so umbennenen, dass sie keinen Unterstrich mehr enthält.