Когда мы делаем запрос страницы с сервера, запрос по умолчанию направляется на порт 80 на сервере, который является http-сервером. Почему тогда мы вводим http перед путем к ресурсу. Если запрос направляется на http-сервер, это должен быть http-запрос.
4 ответа
Вы получили это наоборот. Если тип http://
то запрос идет к порту 80 , если не переопределен (например , http://www.yourserver.blah:8080/...
Но если, например, вы набрали https://...
, то запрос будет идти - опять же, если не будет переопределен - на порт 443/tcp и даже "говорить" на другом "диалекте". То же самое касается ftp://
и порта 21, если браузер понимает протокол FTP (как это делают большинство).
Большинство браузеров считают отсутствие спецификатора http://
в веб-адресе значением «это идет к HTTP-порту 80/tcp
», и они автоматически добавляют http://
для вас. В противном случае вы должны указать, и выбранный порт будет следовать спецификации.
Чтобы лучше понять, как работает URI (URL), вы должны обратиться к RFC 3986
The generic URI syntax consists of a hierarchical sequence of components referred to as the scheme, authority, path, query, and fragment. The following are two example URIs and their component parts: foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/\_________/ \_________/ \__/ | | | | | scheme authority path query fragment | _____________________|__ / \ / \ urn:example:animal:ferret:nose
Также полезно не думать о "сервере" как о блоке, а как о "сервисе", работающем на конкретном порту. Когда клиент делает запрос, он не знает, кто его получит. Хотя стандартом является 80, нет никаких причин, по которым сервер SSH не может быть. Представьте себе сценарий, когда кто-то находится за брандмауэром и хочет подключиться к своему домашнему компьютеру по SSH. Если он запускает SSH-сервер через порт 80, он может пройти мимо основных правил брандмауэра, которые позволяют открывать соединение с портом 80. Есть значения по умолчанию, но они не являются требованиями.
Также имейте в виду, что использование URL-адреса для пользователя. Когда вы указываете http://
он говорит пользователю создать HTTP-запрос к адресу. Ваш запрос браузера для http://www.example.com затем преобразуется в протокол HTTP. Эта статья дает довольно хорошее описание:
Например, браузер перевел URL http://www.test101.com/doc/index.html в следующее сообщение запроса:
GET /docs/index.html HTTP/1.1 Host: www.test101.com Accept: image/gif, image/jpeg, */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) (blank line)
Вы должны сообщить браузеру, по какому протоколу вы хотите, чтобы он говорил с сервером. Большинство браузеров поддерживают несколько протоколов в основной области навигации, таких как https и ftp, которые используют порты 443 и 21/22 соответственно.
Пока никто не упомянул об этом, указывать http://
или https://
Пример: Google рекомендует использовать просто //
вместо http://
или https://
поскольку по умолчанию будет использоваться то, что используется на странице.
Пример из кода Google
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>