2009-07-15 8 views
9

Piszę kod przetwarzający adresy URL i chcę się upewnić, że nie zostawiam jakiegoś dziwnego przypadku ...Jakie są prawidłowe znaki, które mogą pojawiać się na hoście URL?

Czy są jakieś ważne znaki dla hosta innego niż: AZ, 0-9 , "-" i "."?

(Obejmuje to wszystko, co może być w subdomenach itp Esentially, coś pomiędzy: // i pierwszy /)

Dzięki!

+0

Biorąc pod uwagę, że szukasz "czegoś pomiędzy: // i pierwszym /", nie zapominaj, że możesz mieć tam również numer portu, jak w http (ach): //my.host.com : 8080/... – fredw

Odpowiedz

24

proszę zobaczyć Restrictions on valid host names:

Nazwy hostów składa się z szeregu etykiet połączone kropkami, podobnie jak wszystkie domeny . Na przykład "en.wikipedia.org" to nazwa hosta. Każda etykieta musi zawierać od 1 do 63 znaków, a cała nazwa hosta może zawierać maksymalnie 255 znaków.

RFC mandat, że etykiety nazwę hosta za może zawierać tylko litery ASCII „a” przez „z” (bez uwzględniania wielkości liter), to cyfry „0” do „9”, a myślnik. Nazwy hostów nie mogą zaczynać się od lub kończą łącznikiem. Żadne inne znaki , znaki interpunkcyjne lub nie są dozwolone.

+0

'en.wikipedia.org' jest w pełni kwalifikowaną nazwą domeny. Składa się z nazwy hosta "en" i nazwy domeny "wikipedia.org". –

3

Zależy od tego, na jakim poziomie przeprowadzana jest walidacja (przed lub po adresie URL). Jeśli spróbujesz zweryfikować dane wprowadzane przez użytkownika, może to wyjść poza ASCII (z dużymi porcjami Unicode).

Zobacz http://en.wikipedia.org/wiki/Internationalized_domain_name

Jeśli próbujesz zweryfikować po wszystkich ucieczce i „formacie Punycode” jest zrobione, nie ma sensu w walidacji, ponieważ jest już zagwarantowane tylko zawiera poprawnych znaków przez stary RFC.

+0

Hmmmmm, dobra uwaga, muszę się nad tym zastanowić, czy to dotyczy mnie, czy nie. Nie jestem do końca pewien, co masz na myśli przed lub po ucieczce, i nie jestem do końca pewien, w jaki sposób odnosi się do mojej konkretnej sytuacji (co jest trochę dziwne). Będę musiał z tym eksperymentować, dziękuję! –

+0

Co mam na myśli przez "przed lub po ucieczce" "przed ucieczką": rzeczy, które użytkownik wpisze. W tym można używać rzeczy, których URL "po ucieczce" nie może użyć (na przykład =/&?) "po ucieczce": adres URL używany przez niski poziom dns/http/cokolwiek (% 3D% 2F% 26% 3F). To "ucieczka" jest bardziej skomplikowana niż "zastępuj nieprawidłowe znaki za pomocą% xx" dla znaków międzynarodowych –

1

Należy pamiętać, że oprócz reguł nazwy hosta w Internecie, systemy DNS mogą tworzyć dowolne nazwy. Serwery DNS mogą przyjmować i odpowiadać na 8-bitowe żądania binarne: protokół DNS nie zabrania tego.

Oznacza to, że w przypadku adresów URL wewnętrznej sieci LAN mogą występować różne reguły, takie jak podkreślenie pojawiające się w nazwie hosta.

0

Jeśli chcesz napisać kod do analizy adresów URL, który idealnie pasuje do oficjalnej specyfikacji W3C, zapoznaj się z dokumentem na stronie www.w3.org/TR/url-1/. Sekcja 3 (Hosty) zawiera szczegółowe informacje na temat hostów w adresach URL.

Powiązane problemy