Ich verwende eine IIS 7.5-Site, die Inhalte für Ссылка
bereitstelltIch wurde gebeten, Ссылка richtig zu routen (beachten Sie den nachfolgenden Punkt). Wenn Sie diese Seite jetzt treffen, erhalten Sie einen IIS-Fehler:
Schlechte Anfrage - Ungültiger Hostname
HTTP Error 400. Der Hostname der Anfrage ist ungültig.
Dies passiert sogar für Ссылка . Ich habe einige Websites gesehen, die nachgestellte Zeiträume erfolgreich routen (wie ) Ссылка ), aber es sieht so aus, als ob die meisten Apache und nicht IIS verwendet hätten.
Ich habe einen Hostheader in IIS für www.foo.com hinzugefügt. Dies ist zulässig. Sie können die Site jedoch nicht starten. Es wird nicht gestartet und öffnet ein Meldungsfeld, das sagt:
Der Wert liegt nicht im erwarteten Bereich.
Kann jemand in IIS Domänen mit abschließenden Punkten bereitstellen?
Der abschließende Punkt ist ein absolut legaler Teil des Hostnamens - er ist normalerweise unsichtbar, weil er implizit in DNS enthalten ist. Wenn der abschließende Punkt vorhanden ist, wird er als "vollqualifizierter" Domänenname (FQDN) bezeichnet.
Beachten Sie, dass auf dem Draht DNS immer in FQDNs behandelt.
§3.2.2 von RFC 3976 (die Definition für URI-Syntax) sagt dies ( meine Betonung):
Ein durch einen registrierten Namen identifizierter Host ist eine Folge von Zeichen normalerweise zum Nachschlagen in einem lokal definierten Host oder Service Namensregistrierung, obwohl die schemaspezifische Semantik des URI dies erfordern könnte dass stattdessen eine bestimmte Registrierung (oder eine feste Namenstabelle) verwendet wird. Das Der gebräuchlichste Namensregistrierungsmechanismus ist das Domain Name System (DNS). Ein registrierter Name, der für die Suche im DNS vorgesehen ist, verwendet die Syntax in Abschnitt 3.5 von [RFC1034] und Abschnitt 2.1 von [RFC1123] definiert. Eine solche Ein Name besteht aus einer Folge von Domain-Labels, die jeweils durch "." getrennt sind Domain-Label beginnt und endet mit einem alphanumerischen Zeichen und möglicherweise auch mit "-" Zeichen. Das Domain-Label ganz rechts eines vollständig qualifizierten Domänennamens in DNS kann von einem einzelnen gefolgt werden "." und sollte sein, wenn es notwendig ist, zwischen den zu unterscheiden kompletter Domainname und eine lokale Domain.
Datei einen Fehlerbericht mit MS.
Dies ist effektiv ein Fehler in IIS7 +, scheinbar ohne Umgehungslösungen. Es betrifft mich auch. Bitte stimme die Anfrage von MS ab, um das Problem zu beheben:
Dieses Problem wird in Microsoft-Foren hier diskutiert und wird als Verhaltensänderung zwischen IIS 6 angesehen und 7.
Diese Seite hier bietet eine Arbeit um die URL auf der IIS-Seite neu zu schreiben.
Die für verschiedene Webserver erforderlichen Konfigurationsänderungen werden unten wiedergegeben, falls die oben genannte Seite jemals verschwindet.
%Vor%Ich bin mir sicher, dass es irgendwo einen Fehler gibt, aber die Frage ist, was der Fehler ist.
Ich denke, dass der Fehler darin besteht, dass IIS Ihnen erlaubt, einen Host-Header mit einem abschließenden "." zu setzen. Der Host-Header ist nicht dasselbe wie ein FQDN. Der Host-Header soll der Host-Direktive in der HTTP-Anfrage entsprechen:
%Vor%Es ist sicherlich in der URL gültig, die in den Browser eingegeben wird, zB: Ссылка wie dies gelöst ist, um herauszufinden, wohin die Anfrage gesendet werden soll.
Entfernen Sie den nachgestellten Punkt im Host-Header und es sollte OK funktionieren. Sie können es weiterhin in der URL verwenden.
Hoffe, das hilft
Jonathan
Der Browser ist schuld. Es sollte keinen nachfolgenden Punkt im Host-Host-Abschnitt der URL akzeptieren.
Speziell für FF und andere Mozilla-basierte Browser:
Fehler 124565 - DNS: URL: FQDN-Verwendung in "hostip"
Aus konstruktiver Sicht sollte die Netzwerkbibliothek (necko) dies ablehnen, aber die docshell (der benutzerfreundliche Teil) sollte wahrscheinlich eine vom Benutzer eingegebene Zeichenfolge abfangen und eine Korrektur vornehmen (entfernen Sie das ".", und säubere den Host: header).
Übrigens, necko hat auch ein Problem wo es fqdn-faul ist, es klebt das "." am Ende des FQDNs, wenn es die Anfrage an den Resolver sendet, wodurch jeder FQDN von der PQDN-Logik des lokalen Resolvers behandelt wird.