2012-01-21 11 views
29

Czy jest jakiś powód, dla którego dołączamy protokół http/https dla atrybutu linków w atrybucie href?html - łącza bez protokołu http

Byłoby dobrze, aby po prostu zostawić go:

<a href="example.com">my site</a> 
+0

Dzięki @Gareth dobre wyjaśnienie! –

+7

Częścią adresu URL, z którego link jest wysyłany na zewnątrz, jest // nie protokół. Protokół informuje komputer tylko o tym, jakiego urządzenia użyć w łączu. Możesz utworzyć link do "http://example.com", https://example.com, ftp://example.com lub po prostu //example.com. Ten ostatni oświadczył, że powinieneś użyć swojego bieżącego protokołu klienta (zazwyczaj przeglądarki http/https, ale może to być klient poczty e-mail itp.) I jest niezwykle przydatny, gdy rozważasz witrynę z protokołami zarówno http, jak i https. –

Odpowiedz

84

Włączenie części "http:" lub "https:" jest częściowo kwestią tradycji, częściowo kwestią faktycznego określenia protokołu. Jeśli jest ustawiony domyślnie, używany jest protokół bieżącej strony; np. //www.example.com staje się http://www.example.com lub https://www.example.com w zależności od adresu URL strony odsyłającej. Jeśli strona internetowa jest zapisywana na dysku lokalnym, a następnie otwierana z tego miejsca, nie ma ona protokołu (tylko plik: pseudo-protokół), więc adresy URL takie jak //www.example.com nie będą działać; Oto jeden powód włączenia części "http:" lub "https:".

Pominięcie również części "//" jest zupełnie innym problemem, zmieniającym adres URL na względny adres URL, który będzie interpretowany jako względny w stosunku do bieżącego podstawowego adresu URL.

Powodem, dla którego www.example.com działa po wpisaniu lub wklejeniu w wierszu adresu przeglądarki, jest to, że względne adresy URL nie mają sensu (nie ma podstawowego adresu URL, z którym można się powiązać), więc dostawcy przeglądarki zdecydowali się na " Przedrostek http: // "tam.

-1

bez http, zajęłoby względny adres URL. Jeśli musisz wskazać zewnętrzny adres URL, należy podać http, w przeciwnym razie spróbuje pobrać lokalny zasób.

To zależy od tego, gdzie chcesz wskazywać.

+6

Fałsz. Host może zostać określony bez protokołu, zaczynając od "//", tak jak w: "//www.example.com/blah/blah" – NVRAM

+0

wskazuje, że linki są uważane za ścieżki względne bez żadnego http (lub //) jak zauważyła @NVRAM). Byłem w stanie rozwiązać mój problem, sprawdzając adres URL i wstawiając "//", jeśli nie zawierał on "http". To działało świetnie. Dziękuję wam obu –

1

Adresy URL w href nie są ograniczone tylko do dokumentów HTTP. Obsługują one wszystkie protokoły obsługiwane przez przeglądarki - ftp, mailto, file itp.

Możesz również poprzedzić nazwę URL za pomocą "#", aby linkować do identyfikatora html wewnętrznie na stronie. Możesz podać tylko nazwę lub ścieżkę do katalogu, bez protokołu, który zostanie przyjęty jako względny adres URL.

Powiązane problemy