запросы — структура (заголовок и тело), методы, строка статуса и коды состояния, ответы
Большинство используемых нами веб- и мобильных приложений постоянно взаимодействуют с глобальной сетью. Почти все подобные коммуникации совершаются с помощью запросов по протоколу HTTP. Рассказываем о них подробнее.
Базово о протоколе HTTP
HTTP (HyperText Transfer Protocol, дословно — «протокол передачи гипертекста») представляет собой протокол прикладного уровня, используемый для доступа к ресурсам Всемирной Паутины. Под термином гипертекст следует понимать текст, в понятном для человека представлении, при этом содержащий ссылки на другие ресурсы.
Данный протокол описывается спецификацией RFC 2616. На сегодняшний день наиболее распространенной версией протокола является версия HTTP/2, однако нередко все еще можно встретить более раннюю версию HTTP/1.1.
В обмене информацией по HTTP-протоколу принимают участие клиент и сервер. Происходит это по следующей схеме:
- Клиент запрашивает у сервера некоторый ресурс.
- Сервер обрабатывает запрос и возвращает клиенту ресурс, который был запрошен.
По умолчанию для коммуникации по HTTP используется порт 80, хотя вместо него может быть выбран и любой другой порт. Многое зависит от конфигурации конкретного веб-сервера.
Подробнее о протоколе HTTP читайте по ссылке →
HTTP-сообщения: запросы и ответы
Данные между клиентом и сервером в рамках работы протокола передаются с помощью HTTP-сообщений. Они бывают двух видов:
- Запросы (HTTP Requests) — сообщения, которые отправляются клиентом на сервер, чтобы вызвать выполнение некоторых действий. Зачастую для получения доступа к определенному ресурсу. Основой запроса является HTTP-заголовок.
- Ответы (HTTP Responses) — сообщения, которые сервер отправляет в ответ на клиентский запрос.
Само по себе сообщение представляет собой информацию в текстовом виде, записанную в несколько строчек.
В целом, как запросы HTTP, так и ответы имеют следующую структуру:
- Стартовая строка (start line) — используется для описания версии используемого протокола и другой информации — вроде запрашиваемого ресурса или кода ответа. Как можно понять из названия, ее содержимое занимает ровно одну строчку.
- HTTP-заголовки (HTTP Headers) — несколько строчек текста в определенном формате, которые либо уточняют запрос, либо описывают содержимое тела сообщения.
- Пустая строка, которая сообщает, что все метаданные для конкретного запроса или ответа были отправлены.
- Опциональное тело сообщения, которое содержит данные, связанные с запросом, либо документ (например HTML-страницу), передаваемый в ответе.
Рассмотрим атрибуты HTTP-запроса подробнее.
Стартовая строка
Стартовая строка HTTP-запроса состоит из трех элементов:
- Метод HTTP-запроса (method, реже используется термин verb). Обычно это короткое слово на английском, которое указывает, что конкретно нужно сделать с запрашиваемым ресурсом. Например, метод GET сообщает серверу, что пользователь хочет получить некоторые данные, а POST — что некоторые данные должны быть помещены на сервер.
- Цель запроса. Представлена указателем ресурса URL, который состоит из протокола, доменного имени (или IP-адреса), пути к конкретному ресурсу на сервере. Дополнительно может содержать указание порта, несколько параметров HTTP-запроса и еще ряд опциональных элементов.
- Версия используемого протокола (либо HTTP/1.1, либо HTTP/2), которая определяет структуру следующих за стартовой строкой данных.
В примере ниже стартовая строка указывает, что в качестве метода используется GET, обращение будет произведено к ресурсу /index.html, по версии протокола HTTP/1.1:
Основные структурные элементы URL.Разберемся с каждым из названных элементов подробнее.
Методы
Методы позволяют указать конкретное действие, которое мы хотим, чтобы сервер выполнил, получив наш запрос. Так, некоторые методы позволяют браузеру (который в большинстве случаев является источником запросов от клиента) отправлять дополнительную информацию в теле запроса — например, заполненную форму или документ.
Ниже приведены наиболее используемые методы и их описание:
Разберемся с каждым из названных элементов подробнее.
Метод | Описание |
GET | Позволяет запросить некоторый конкретный ресурс. Дополнительные данные могут быть переданы через строку запроса (Query String) в составе URL (например ?param=value).О составляющих URL мы поговорим чуть позже. |
POST | Позволяет отправить данные на сервер. Поддерживает отправку различных типов файлов, среди которых текст, PDF-документы и другие типы данных в двоичном виде. Обычно метод POST используется при отправке информации (например, заполненной формы логина) и загрузке данных на веб-сайт, таких как изображения и документы. |
HEAD | Здесь придется забежать немного вперед и сказать, что обычно сервер в ответ на запрос возвращает заголовок и тело, в котором содержится запрашиваемый ресурс. Данный метод при использовании его в запросе позволит получить только заголовки, которые сервер бы вернул при получении GET-запроса к тому же ресурсу. Запрос с использованием данного метода обычно производится для того, чтобы узнать размер запрашиваемого ресурса перед его загрузкой. |
PUT | Используется для создания (размещения) новых ресурсов на сервере. Если на сервере данный метод разрешен без надлежащего контроля, то это может привести к серьезным проблемам безопасности. |
DELETE | Позволяет удалить существующие ресурсы на сервере. Если использование данного метода настроено некорректно, то это может привести к атаке типа «Отказ в обслуживании» (Denial of Service, DoS) из-за удаления критически важных файлов сервера. |
OPTIONS | Позволяет запросить информацию о сервере, в том числе информацию о допускаемых к использованию на сервере HTTP-методов. |
PATCH | Позволяет внести частичные изменения в указанный ресурс по указанному расположению. |
URL
Получение доступа к ресурсам по HTTP-протоколу осуществляется с помощью указателя URL (Uniform Resource Locator). URL представляет собой строку, которая позволяет указать запрашиваемый ресурс и еще ряд параметров.
Использование URL неразрывно связано с другими элементами протокола, поэтому далее мы рассмотрим его основные компоненты и строение:
Поле Scheme используется для указания используемого протокола, всегда сопровождается двоеточием и двумя косыми чертами (://).
Host указывает местоположение ресурса, в нем может быть как доменное имя, так и IP-адрес.
Port, как можно догадаться, позволяет указать номер порта, по которому следует обратиться к серверу. Оно начинается с двоеточия (:), за которым следует номер порта. При отсутствии данного элемента номер порта будет выбран по умолчанию в соответствии с указанным значением Scheme (например, для http:// это будет порт 80).
Далее следует поле Path. Оно указывает на ресурс, к которому производится обращение. Если данное поле не указано, то сервер в большинстве случаев вернет указатель по умолчанию (например index.html).
Поле Query String начинается со знака вопроса (?), за которым следует пара «параметр-значение», между которыми расположен символ равно (=). В поле Query String могут быть переданы несколько параметров с помощью символа амперсанд (&) в качестве разделителя.
Не все компоненты необходимы для доступа к ресурсу. Обязательно следует указать только поля Scheme и Host.
Версии HTTP
Раз уж мы упомянули версию протокола как элемента стартовой строки, то стоит сказать об основных отличиях версий HTTP/1. X от HTTP/2.X.
Последняя стабильная, наиболее стандартизированная версия протокола первого поколения (версия HTTP/1.1) вышла в далеком 1997 году. Годы шли, веб-страницы становились сложнее, некоторые из них даже стали приложениями в том виде, в котором мы понимаем их сейчас. Кроме того, объем медиафайлов и скриптов, которые добавляли интерактивность страницам, рос. Это, в свою очередь, создавало перегрузки в работе протокола версии HTTP/1.1.
Стало очевидно, что у HTTP/1.1 есть ряд значительных недостатков:
- Заголовки, в отличие от тела сообщения, передавались в несжатом виде.
- Часто большая часть заголовков в сообщениях совпадала, но они продолжали передаваться по сети.
- Отсутствовала возможность так называемого мультиплексирования — механизма, позволяющего объединить несколько соединений в один поток данных. Приходилось открывать несколько соединений на сервере для обработки входящих запросов.
С выходом HTTP/2 было предложено следующее решение: HTTP/1. X-сообщения разбивались на так называемые фреймы, которые встраивались в поток данных.
Фреймы данных (тела сообщения) отделялись от фреймов заголовка, что позволило применять сжатие. Вместе с появлением потоков появился и ранее описанный механизм мультиплексирования — теперь можно было обойтись одним соединением для нескольких потоков.
Единственное о чем стоит сказать в завершение темы: HTTP/2 перестал быть текстовым протоколом, а стал работать с «сырой» двоичной формой данных. Это ограничивает чтение и создание HTTP-сообщений «вручную». Однако такова цена за возможность реализации более совершенной оптимизации и повышения производительности.
Заголовки
HTTP-заголовок представляет собой строку формата «Имя-Заголовок:Значение», с двоеточием(:) в качестве разделителя. Название заголовка не учитывает регистр, то есть между Host и host, с точки зрения HTTP, нет никакой разницы. Однако в названиях заголовков принято начинать каждое новое слово с заглавной буквы. Структура значения зависит от конкретного заголовка. Несмотря на то, что заголовок вместе со значениями может быть достаточно длинным, занимает он всего одну строчку.
В запросах может передаваться большое число различных заголовков, но все их можно разделить на три категории:
- Общего назначения, которые применяются ко всему сообщению целиком.
- Заголовки запроса уточняют некоторую информацию о запросе, сообщая дополнительный контекст или ограничивая его некоторыми логическими условиями.
- Заголовки представления, которые описывают формат данных сообщения и используемую кодировку. Добавляются к запросу только в тех случаях, когда с ним передается некоторое тело.
Ниже можно видеть пример заголовков в запросе:
Самые частые заголовки запроса
Заголовок | Описание |
Host | Используется для указания того, с какого конкретно хоста запрашивается ресурс. В качестве возможных значений могут использоваться как доменные имена, так и IP-адреса. На одном HTTP-сервере может быть размещено несколько различных веб-сайтов. Для обращения к какому-то конкретному требуется данный заголовок. |
User-Agent | Заголовок используется для описания клиента, который запрашивает ресурс. Он содержит достаточно много информации о пользовательском окружении. Например, может указать, какой браузер используется в качестве клиента, его версию, а также операционную систему, на которой этот клиент работает. |
Refer | Используется для указания того, откуда поступил текущий запрос. Например, если вы решите перейти по какой-нибудь ссылке в этой статье, то вероятнее всего к запросу будет добавлен заголовок Refer: https://selectel.ru |
Accept | Позволяет указать, какой тип медиафайлов принимает клиент. В данном заголовке могут быть указаны несколько типов, перечисленные через запятую (‘ , ‘). А для указания того, что клиент принимает любые типы, используется следующая последовательность — */*. |
Cookie | Данный заголовок может содержать в себе одну или несколько пар «Куки-Значение» в формате cookie=value. Куки представляют собой небольшие фрагменты данных, которые хранятся как на стороне клиента, так и на сервере, и выступают в качестве идентификатора. Куки передаются вместе с запросом для поддержания доступа клиента к ресурсу. Помимо этого, куки могут использоваться и для других целей, таких как хранение пользовательских предпочтений на сайте и отслеживание клиентской сессии. Несколько кук в одном заголовке могут быть перечислены с помощью символа точка с запятой (‘ ; ‘), который используется как разделитель. |
Authorization | Используется в качестве еще одного метода идентификации клиента на сервере. После успешной идентификации сервер возвращает токен, уникальный для каждого конкретного клиента. В отличие от куки, данный токен хранится исключительно на стороне клиента и отправляется клиентом только по запросу сервера. Существует несколько типов аутентификации, конкретный метод определяется тем веб-сервером или веб-приложением, к которому клиент обращается за ресурсом. |
Тело запроса
Завершающая часть HTTP-запроса — это его тело. Не у каждого HTTP-метода предполагается наличие тела. Так, например, методам вроде GET, HEAD, DELETE, OPTIONS обычно не требуется тело. Некоторые виды запросов могут отправлять данные на сервер в теле запроса: самый распространенный из таких методов — POST.
Ответы HTTP
HTTP-ответ является сообщением, которое сервер отправляет клиенту в ответ на его запрос. Его структура равна структуре HTTP-запроса: стартовая строка, заголовки и тело.
Строка статуса (Status line)Стартовая строка HTTP-ответа называется строкой статуса (status line). На ней располагаются следующие элементы:
- Уже известная нам по стартовой строке запроса версия протокола (HTTP/2 или HTTP/1.1).
- Код состояния, который указывает, насколько успешно завершилась обработка запроса.
- Пояснение — короткое текстовое описание к коду состояния. Используется исключительно для того, чтобы упростить понимание и восприятие человека при просмотре ответа.
Так выглядит строка состояния ответа.
Коды состояния и текст статуса
Коды состояния HTTP используются для того, чтобы сообщить клиенту статус их запроса. HTTP-сервер может вернуть код, принадлежащий одной из пяти категорий кодов состояния:
Категория | Описание |
1xx | Коды из данной категории носят исключительно информативный характер и никак не влияют на обработку запроса. |
2xx | Коды состояния из этой категории возвращаются в случае успешной обработки клиентского запроса. |
3xx | Эта категория содержит коды, которые возвращаются, если серверу нужно перенаправить клиента. |
4xx | Коды данной категории означают, что на стороне клиента был отправлен некорректный запрос. Например, клиент в запросе указал не поддерживаемый метод или обратился к ресурсу, к которому у него нет доступа. |
5xx | Ответ с кодами из этой категории приходит, если на стороне сервера возникла ошибка. |
Полный список кодов состояния доступен в спецификации к протоколу, ниже приведены только самые распространенные коды ответов:
Категория | Описание |
200 OK | Возвращается в случае успешной обработки запроса, при этом тело ответа обычно содержит запрошенный ресурс. |
302 Found | Перенаправляет клиента на другой URL. Например, данный код может прийти, если клиент успешно прошел процедуру аутентификации и теперь может перейти на страницу своей учетной записи. |
400 Bad Request | Данный код можно увидеть, если запрос был сформирован с ошибками. Например, в нем отсутствовали символы завершения строки. |
403 Forbidden | Означает, что клиент не обладает достаточными правами доступа к запрошенному ресурсу. Также данный код можно встретить, если сервер обнаружил вредоносные данные, отправленные клиентом в запросе. |
404 Not Found | Каждый из нас, так или иначе, сталкивался с этим кодом ошибки. Данный код можно увидеть, если запросить у сервера ресурс, которого не существует на сервере. |
500 Internal Error | Данный код возвращается сервером, когда он не может по определенным причинам обработать запрос. |
Помимо основных кодов состояния, описанных в стандарте, существуют и коды состояния, которые объявляются крупными сетевыми провайдерами и серверными платформами. Так, коды состояния, используемые Selectel, можно посмотреть здесь.
Заголовки ответа
Response Headers, или заголовки ответа, используются для того, чтобы уточнить ответ, и никак не влияют на содержимое тела. Они существуют в том же формате, что и остальные заголовки, а именно «Имя-Значение» с двоеточием (:) в качестве разделителя.
Ниже приведены наиболее часто встречаемые в ответах заголовки:
Категория | Пример | Описание |
Server | Server: ngnix | Содержит информацию о сервере, который обработал запрос. |
Set-Cookie | Set-Cookie:PHPSSID=bf42938f | Содержит куки, требуемые для идентификации клиента. Браузер парсит куки и сохраняет их в своем хранилище для дальнейших запросов. |
WWW-Authenticate | WWW-Authenticate: BASIC realm=»localhost» | Уведомляет клиента о типе аутентификации, который необходим для доступа к запрашиваемому ресурсу. |
Тело ответа
Последней частью ответа является его тело. Несмотря на то, что у большинства ответов тело присутствует, оно не является обязательным. Например, у кодов «201 Created» или «204 No Content» тело отсутствует, так как достаточную информацию для ответа на запрос они передают в заголовке.
Безопасность HTTP-запросов, или что такое HTTPs
HTTP является расширяемым протоколом, который предоставляет огромное количество возможностей, а также поддерживает передачу всевозможных типов файлов. Однако, вне зависимости от версии, у него есть один существенный недостаток, который можно заметить если перехватить отправленный HTTP-запрос:
Да, все верно: данные передаются в открытом виде. HTTP сам по себе не предоставляет никаких средств шифрования.
Но как же тогда работают различные банковские приложения, интернет-магазины, сервисы оплаты услуг и прочие приложения, в которых циркулирует чувствительная информация пользователей?
Время рассказать про HTTPs!
HTTPs (HyperText Transfer Protocol, secure) является расширением HTTP-протокола, который позволяет шифровать отправляемые данные, перед тем как они попадут на транспортный уровень. Данный протокол по умолчанию использует порт 443.
Теперь если мы перехватим не HTTP , а HTTPs-запрос, то не увидим здесь ничего интересного:
Данные передаются в едином зашифрованном потоке, что делает невозможным получение учетных данных пользователей и прочей критической информации средствами обычного перехвата.
Повысьте безопасность на сетевых портах с Selectel
Три межсетевых экрана для любых потребностей бизнеса.
Выбрать
Если хотите подробнее узнать о деталях работы протокола, читайте статью в нашем блоге →
Как отправить HTTP-запрос и прочитать его ответ
Теория это, конечно, отлично, но ничего так хорошо не закрепляет материал, как практика
Мы рассмотрим несколько способов, как написать HTTP-запрос в браузер, послать HTTP-запрос на сервер и получить ответ:
- Инструменты разработчика в браузере.
- Утилита cURL.
Инструменты разработчика
Основной программой на наших устройствах, которая работает с HTTP-протоколом, в большинстве случаев является браузер. Помимо обычных пользователей, с браузерами часто работают и разработчики веб-приложений. Именно их инструментами мы воспользуемся для работы с запросами и ответами.
По нажатию комбинации клавиш [Ctrl+Shift+I] или просто [F12] в подавляющем большинстве современных браузеров у нас откроется окно инструментов разработчика, которая представляет собой панель с несколькими вкладками. Нужная нам вкладка обычно называется Network. Перейдем в нее, а в адресной строке введем URL того сайта, на который хотим попасть. В качестве примера воспользуемся сайтом блога Selectel — https://selectel.ru/blog/.
После нажатия Enter сайт начнет загружаться, а открытая вкладка Network — заполняться различными элементами, начиная все больше напоминать приборную панель самолета.
Не спешите пугаться. Это всего лишь список ресурсов, которые нужны для правильного отображения и работы сайта.
Нажав на любой из них, мы можем увидеть детали обработки отправленного запроса:
В данном запросе, например:
- URL, к которому было совершено обращение — https://selectel. ru/blog,
- Метод, который был использован в запросе — GET,
- И в качестве кода возврата сервер вернул нам страницу с кодом статуса — 200 OK
Утилита cURL
Следующий инструмент, с помощью которого мы сможем послать запрос на тот или иной сервер, это утилита cURL.
cURL (client URL) является небольшой утилитой командной строки, которая позволяет работать с HTTP и рядом других протоколов.
Для отправки запроса и получения ответа мы можем воспользоваться флагом -v и указанием URL того ресурса, который мы хотим получить. «Схему» HTTP-запроса можно увидеть на скрине ниже:
После запуска утилита выполняет:
- подключение к серверу,
- самостоятельно разрешает все вопросы, необходимые для отправки запроса по HTTPs,
- отправляет запрос, содержимое которого мы можем видеть благодаря флагу -v,
- принимая ответ от сервера, отображает его в командной строке «как-есть».
Помимо этого, у данной утилиты есть огромное количество опций, которые предоставляют возможности по детальной настройке отправляемых запросов. Все эти возможности и делают ее такой популярной у веб-разработчиков и других специалистов, которым приходится работать с протоколом HTTP.
Заключение
HTTP представляет собой расширяемый протокол прикладного уровня, на котором работает весь веб-сегмент интернета. В данной статье мы рассмотрели принцип его работы, структуру, «компоненты» HTTP-запросов. Коснулись вопросов отличия версий протокола, HTTPs — его расширения, добавляющего шифрование. Разобрали устройство запроса, поняли, как можно отправить HTTP-запрос и получить ответ от сервера.
История WWW — Документация по Веб-программированию 0.0.0
Примечание
Интернет — это глобальная компьютерная сеть, объединяющая сотни миллионов компьютеров в общее информационное пространство. Интернет представляет свою инфраструктуру для прикладных сервисов различного назначения, самым популярным из которых является Всемирная Паутина – World Wide Web (www).
World Wide Web (www, web, рус.: веб, Всемирная Паутина) — распределенная информационная система, предоставляющая доступ к гипертекстовым документам по протоколу HTTP.
WWW — сетевая технология прикладного уровня стека TCP/IP, построенная на клиент-серверной архитектуре и использующая инфраструктуру Интернет для взаимодействия между сервером и клиентом (рис. 1).
Серверы www (веб-серверы) — это хранилища гипертекстовой (в общем случае) информации, управляемые специальным программным обеспечением.
Документы, представленные в виде гипертекста называются веб-страницами. Несколько веб-страниц, объединенных общей тематикой, оформлением, связанных гипертекстовыми ссылками и обычно находящихся на одном и том же веб-сервере, называются веб-сайтом.
Для загрузки и просмотра информации с веб-сайтов используются специальные программы — браузеры, способные обрабатывать гипертектовую разметку и отображать содержимое веб-страниц.
Рис. 1. Архитектура сервиса WWW
В основе www — взаимодействие между веб-сервером и браузерами по протоколу HTTP (HyperText Transfer Protocol). Веб-сервер — это программа, запущенная на сетевом компьютере и ожидающая клиентские запросы по протоколу HTTP. Браузер может обратиться к веб-серверу по доменному имени или по ip-адресу, передавая в запросе идентификатор требуемого ресурса. Получив запрос от клиента, сервер находит соответствующий ресурс на локальном устройстве хранения и отправляет его как ответ. Браузер принимает ответ и обрабатывает его соответствующим образом, в зависимости от типа ресурса (отображает гипертекст, показывает изображения, сохраняет полученные файлы и т.п.).
Основной тип ресурсов Всемирной паутины — гипертекстовые страницы. Гипертекст — это обычный текст, размеченный специальными управляющими конструкциями — тегами. Браузер считывает теги и интерпретирует их как команды форматирования при выводе информации. Теги описывают структуру документа, а специальные теги, якоря и гиперссылки, позволяют установить связи между веб-страницами и перемещаться как внутри веб-сайта, так и между сайтами.
Примечание
Т. Дж. Бернерс-Ли — «отец» Всемирной паутины
Сэр Тимоти Джон Бернерс-Ли — британский учёный-физик, изобретатель Всемирной паутины (совместно с Робертом Кайо), автор URI, HTTP и HTML. Действующий глава Консорциума Всемирной паутины (W3C). Автор концепции семантической паутины и множества других разработок в области информационных технологий. 16 июля 2004 года Королева Великобритании Елизавета II произвела Тима Бернерса-Ли в Рыцари-Командоры за «службу во благо глобального развития Интернета».
Компоненты WWW
Функционирование сервиса обеспечивается четырьмя составляющими:
- URL/URI — унифицированный способ адресации и идентификации сетевых ресурсов;
- HTML — язык гипертекстовой разметки веб-документов;
- HTTP — протокол передачи гипертекста;
- CGI — общий шлюзовый интерфейс, представляющий доступ к серверным приложениям.
Адресация веб-ресурсов. URL, URN, URI
Для доступа к любым сетевым ресурсам необходимо знать где они размещены и как к ним можно обратиться. Во Всемирной паутине для обращения к веб-документам изначально используется стандартизованная схема адресации и идентификации, учитывающую опыт адресации и идентификации таких сетевых сервисов, как e-mail, telnet, ftp и т.
URL (RFC 1738) — унифицированный локатор (указатель) ресурсов, стандартизированный способ записи адреса ресурса в www и сети Интернет. Адрес URL имеет гибкую и расширяемую структуру для максимально естественного указания местонахождения ресурсов в сети. Для записи адреса используется ограниченный набор символов ASCII. Общий вид адреса можно представить так:
<схема>://<логин>:<пароль>@<хост>:<порт>/<полный-путь-к-ресурсу>
Где:
схема
схема обращения к ресурсу: http, ftp, gopher, mailto, news, telnet, file, man, info, whatis, ldap, wais и т.п.
логин:пароль
имя пользователя и его пароль, используемые для доступа к ресурсу
хост
доменное имя хоста или его IP-адрес.
порт
порт хоста для подключения
полный-путь-к-ресурсу
уточняющая информация о месте нахождения ресурса (зависит от протокола).
Примеры URL:
http://example.com #запрос стартовой страницы по умолчанию
http://www. example.com/site/map.html #запрос страницы в указанном каталоге
http://example.com:81/script.php #подключение на нестандартный порт
http://example.org/script.php?key=value #передача параметров скрипту
ftp://user:[email protected] #авторизация на ftp-сервере
http://192.168.0.1/example/www #подключение по ip-адресу
file:///srv/www/htdocs/index.html #открытие локального файла
gopher://example.com/1 #подключение к серверу gopher
mailto://[email protected] #ссылка на адрес эл.почты
В августе 2002 года RFC 3305 анонсировал устаревание URL в пользу URI (Uniform Resource Identifier), еще более гибкого способа адресации, вобравшего возможности как URL, так и URN (Uniform Resource Name, унифицированное имя ресурса). URI позволяет не только указавать местонахождение ресурса (как URL), но и идентифицировать его в заданном пространстве имен (как URN). Если в URI не указывать местонахождение, то с его помощью можно описывать ресурсы, которые не могут быть получены непосредственно из Интернета (автомобили, персоны и т.
Язык гипертекстовой разметки HTML
HTML (`HyperText Markup Language <>`_) — стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц созданы при помощи языка HTML. Язык HTML интерпретируется браузером и отображается в виде документа, в удобной для человека форме. HTML является приложением SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту ISO 8879.
HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. Для этого он представляет небольшой (сравнительно) набор структурных и семантических элементов — тегов. С помощью HTML можно легко создать относительно простой, но красиво оформленный документ. Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без их привязки к средствам воспроизведения (отображения). В идеале, текст с разметкой HTML должен единообразно воспроизводиться на различном оборудовании (монитор ПК, экран органайзера, ограниченный по размерам экран мобильного телефона, медиа-проектор). Однако современное применение HTML очень далеко от его изначальной задачи. Со временем основная идея платформонезависимости языка HTML стала жертвой коммерциализации www и потребностей в мультимедийном и графическом оформлении.
Протокол HTTP
HTTP (`HyperText Transfer Protocol <>`_) — протокол передачи гипертекста, текущая версия HTTP/1.1 (RFC 2616). Этот протокол изначально был предназначен для обмена гипертекстовыми документами, сейчас его возможности существенно расширены в сторону передачи двоичной информации.
HTTP — типичный клиент-серверный протокол, обмен сообщениями идёт по схеме «запрос-ответ» в виде ASCII-команд. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя данный протокол является символьно-ориентированным.
HTTP — протокол прикладного уровня, но используется также в качестве «транспорта» для других прикладных протоколов, в первую очередь, основанных на языке XML (SOAP, XML-RPC, SiteMap, RSS и проч.).
Общий шлюзовый интерфейс CGI
CGI (`Common Gateway Interface <>`_) — механизм доступа к программам на стороне веб-сервера. Спецификация CGI была разработана для расширения возможностей сервиса www за счет подключения различного внешнего программного обеспечения. При использовании CGI веб-сервер представляет браузеру доступ к исполнимым программам, запускаемым на его (серверной) стороне через стандартные потоки ввода и вывода.
Интерфейс CGI применяется для создания динамических веб-сайтов, например, когда веб-страницы формируются из результатов запроса к базе данных. Сейчас популярность CGI снизилась, т. к. появились более совершенные альтернативные решения (например, модульные расширения веб-серверов).
Программное обеспечение сервиса WWW
Веб-серверы
Веб-сервер — это сетевое приложение, обслуживающее HTTP-запросы от клиентов, обычно веб-браузеров. Веб-сервер принимает запросы и возвращает ответы, обычно вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными. Веб-серверы — основа Всемирной паутины. С расширением спектра сетевых сервисов веб-серверы все чаще используются в качестве шлюзов для серверов приложений или сами представляют такие функции (например, Apache Tomcat).
Созданием программного обеспечения веб-серверов занимаются многие разработчики, но наибольшую популярность (по статистике http://netcraft.com) имеют такие программные продукты, как Apache (Apache Software Foundation), IIS (Microsoft), Google Web Server (GWS, Google Inc.) и nginx.
Apache — свободное программное обеспечение, распространяется под совместимой с GPL лицензией. Apache уже многие годы является лидером по распространенности во Всемирной паутине в силу своей надежности, гибкости, масштабируемости и безопасности.
IIS (Internet Information Services) — проприетарный набор серверов для нескольких служб Интернета, разработанный Майкрософт и распространяемый с серверными операционными системами семейства Windows. Основным компонентом IIS является веб-сервер, также поддерживаются протоколы FTP, POP3, SMTP, NNTP.
Google Web Server (GWS) — разработка компании Google на основе веб-сервера Apache. GWS оптимизирован для выполнения приложений сервиса Google Applications.
nginx [engine x] — это HTTP-сервер, совмещенный с кэширующим прокси-сервером. Разработан И. Сысоевым для компании Рамблер. Осенью 2004 года вышел первый публично доступный релиз, сейчас nginx используется на 9-12% веб-серверов. Браузеры
Браузер, веб-обозреватель (web-browser) — клиентское приложение для доступа к веб-серверам по протоколу HTTP и просмотра веб-страниц. Как правило браузеры дополнительно поддерживают и ряд других протоколов (например ftp, file, mms, pop3).
Первые HTTP-клиенты были консольными и работали в текстовом режиме, позволяя читать гипертекст и перемещаться по ссылкам. Сейчас консольные браузеры (такие, как lynx, w3m или links) практически не используются рядовыми посетителями веб-сайтов. Тем не менее такие браузеры весьма полезны для веб-разработчиков, так как позволяют «увидеть» веб-страницу «глазами» поискового робота.
Исторически первым браузером в современном понимании (т.е. с графическим интерфейсом и т.д.) была программа NCSA Mosaic, разработанная Марком Андерисеном и Эриком Бина. Mosaic имел довольно ограниченные возможности, но его открытый исходный код стал основой для многих последующих разработок.
Существует большое число программ-браузеров, но наибольшей популярностью пользуются следующие:
Source: StatCounter Global Stats — Browser Market Share
Internet Explorer (IE) — браузер, разработанный компанией Майкрософт и тесно интегрированный c ОС Windows. Платформозависим (поддержка сторонних ОС прекращена, начиная с версии 5). Единственный браузер, напрямую поддерживающий технологию ActiveX. Не полностью совместим со стандартами W3C, в связи с чем требует дополнительных затрат от веб-разработчиков.
Firefox — свободный кроссплатформенный браузер, разрабатываемый Mozilla Foundation и распространяемый под тройной лицензией GPL/LGPL/MPL. В основе браузера — движок Gekko, который изначально создавался для Netscape Communicator. Однако, вместо того, чтобы предоставить все возможности движка в стандартной поставке, Firefox реализует лишь основную его функциональность, предоставляя пользователям возможность модифицировать браузер в соответствии с их требованиями через поддержку расширений (add-ons), тем оформления и плагинов.
Safari — проприетарный браузер, разработаный корпорацией Apple и входящий в состав операционной системы Mac OS X. Бесплатно распространяется для операционных систем семейства Microsoft Windows.
В браузере используется уникальный по производительности интерпретатор JavaScript и еще ряд интересных для пользователя решений, которые отсутствуют или не развиты в других браузерах.Chrome — кроссплатформенный браузер с открытым исходным кодом, разрабатываемый компанией Google. Первая стабильная версия вышла 11 декабря 2008 года. В отличие от многих других браузеров, в Chrome каждая вкладка является отдельным процессом. В случае если процесс обработки содержимого вкладки зависнет, его можно будет завершить без риска потери данных других вкладок. Еще одна особенность — интеллектуальная адресная строка (Omnibox). К возможности автозаполнения она добавляет поисковые функции с учетом популярности сайта, релевантности и пользовательских предпочтений (истории переходов).
Opera — кроссплатформенный многофункциональный веб-браузер, впервые представленный в 1994 году группой исследователей из норвежской компании Telenor. Дальнейшая разработка ведется Opera Software ASA.
Наряду с браузерами, ориентированными на пользователя, существуют и специализированные клиенты-роботы («пауки», «боты»), подключающиеся к веб-серверам и выполняющие различные задачи автоматической обработки гипертекстовой информации. Сюда относятся, в первую очередь, роботы поисковых систем, таких как google.com, yandex.ru, yahoo.com и т.п., выполняющие обход веб-сайтов для последующего построения поискового индекса.
Единый индикатор ресурса | bartleby
Что такое унифицированный индикатор ресурсов (URI)?
URI — это строка символов, идентифицирующая ресурс. Он может идентифицировать все объекты, включая людей, места, концепции, информацию, веб-страницы и книги. Ресурсы могут быть или не быть подключены к Интернету.
Наиболее часто используемой формой унифицированного идентификатора ресурса является унифицированный указатель ресурса (URL). URL-адреса используются для идентификации и поиска веб-сайтов в Интернете.
Единый синтаксис индикатора ресурса
Каждый URI начинается со схемы. Синтаксис URI — это единое и расширяемое соглашение об именах, в котором спецификация каждой схемы ограничивает синтаксис других частей URI. Надмножеством всего синтаксиса схемы URI является общий синтаксис URI.
Общий синтаксис URI состоит из пяти компонентов:
URI = схема:[//полномочия] путь[?запрос][#фрагмент]
Кроме того, часть полномочий делится на три части:
Полномочия = [userinfo@]host[:port]
Общая форма синтаксиса URI представлена ниже:
CC BY-SA 4.0 | Кредиты изображений: https://commons. wikimedia.org | OmenBreezeОбщий синтаксис URI включает следующие элементы.
Схема
Первым компонентом URI является схема. Схемы являются компонентами, нечувствительными к регистру. Они отличаются от других символов URI двоеточием. Схемы имеют строку символов, начинающуюся с буквы, за которой следует комбинация букв, цифр, плюс символ, символ точки или дефис. Обычно используемые схемы URI: протокол передачи гипертекста (HTTP), безопасный протокол передачи гипертекста (HTTPS), протокол передачи файлов (FTP), MailTo, файл и данные.
Имена схем URI должны быть зарегистрированы в Администрации адресного пространства Интернета (IANA). Однако допускается использование и незарегистрированных схем. Пример схемы URI:
telnet://192.0.2.121:83, здесь telnet — это схема URI.
Полномочия
Полномочия Единого индикатора ресурсов состоят из нескольких частей. Ему предшествует двойная косая черта (//).
- Информация о пользователе : Этот подкомпонент представляет имя пользователя и необязательный пароль, которым предшествует двоеточие. За ним следует символ @.
- Хост : Хост указывает зарегистрированное имя или адрес интернет-протокола (IP-адрес). После имени хоста к URI добавляется двоеточие, чтобы отличить его от других символов. Адреса IPv4 должны иметь десятичную запись с точками и должны быть заключены в квадратные скобки. Обычно они имеют шестнадцатеричный формат.
- Порт : Порт — необязательный подкомпонент, которому предшествует двоеточие.
Путь
Путь в URI содержит последовательность сегментов, отмеченную косой чертой. Он всегда определяется для URI, но может быть нулевой длины (пустым). Если сегмент пуст, он будет состоять из двух последовательных косых черт в пути. Если присутствует компонент полномочий, то путь должен быть пустым или начинаться с косой черты. В противном случае путь не может начинаться с двух косых черт. Последняя часть пути называется slug.
Запрос
Часть запроса в компоненте является необязательной и предваряется вопросительным знаком (?). Он содержит строку запроса неиерархических данных. В соответствии с принятым соглашением запрос представляет собой последовательность пар атрибут-значение, разделенных амперсандом (&) или точкой с запятой. Это похоже на операцию, применяемую к объекту, способному запрашивать URI. Например, в следующем URI:
foo://techtalks.org:8042/over/there?name=eagle#beak
Часть запроса в приведенной выше ссылке указана как name=eagle
Фрагмент
Фрагмент также является необязательной частью URI. Ему предшествует решетка (#). Он состоит из идентификатора фрагмента, который указывает на вторичный ресурс, такой как заголовок раздела в сообщении, определяемый остальной частью URI. Если основным ресурсом является статья или документ на языке гипертекстовой разметки (HTML), фрагмент будет атрибутом id определенного элемента. В таком случае веб-браузеры будут прокручивать этот элемент при нажатии на ссылку. В качестве альтернативы, если идентификатор фрагмента пуст, это означает, что URI является целым объектом. В таких случаях знак решетки будет опущен.
Пример URIРассмотрим следующий URI:
https://[email protected]:123/forum/questions/?tag=networking&order=popular#bottom
Здесь части URI будет следующим:
- https — схема URI.
- paul.mark — это информация о пользователе.
- www.myhome.com — это имя хоста.
- 123 — это порт.
- /forum/questions — это путь.
- tag=networking&order=popular — это запрос.
- дно — фрагмент.
Назначение URI
URI предоставляет простой метод распознавания интернет-ресурсов. Он использует разные идентификаторы ресурсов для разделения ресурсов одного контекста. Такие ресурсы, как электронные документы, веб-страницы, графика и другой информативный контент, можно идентифицировать с помощью URI. Индикаторы можно даже применять к ресурсам разного контекста.
Типы URI
Существует два типа унифицированных идентификаторов ресурсов:
- Единый указатель ресурсов (URL)
- Единые имена ресурсов (URN)
Единый указатель ресурсов
URL — это полезный, но неформальный тип URI, используемый для классификации и поиска веб-страниц в Интернете. Он включает в себя основной механизм доступа и местоположение. Унифицированный указатель ресурса идентифицирует ресурс. Он также указывает, как получить доступ к ресурсу и в каком месте он доступен. Он состоит из таких компонентов, как протокол, имя домена и имя субдомена, а также компоненты URI.
Например, URL-адрес http://myhome.com/wiki/Main_Page будет ссылаться на ресурс /wiki/Main_Page, имеющий представление в форме HTML, и соответствующий код можно найти с помощью HTTP: с сетевого узла, имеющего доменное имя (myhome.com).
URL-адреса являются подмножествами URI. Это означает, что каждый URL-адрес является URI. Однако обратное неверно. Несколько замечаний по поводу URL-адресов:
- Если ресурс представляет собой веб-страницу, ее URL-адрес будет начинаться с протокола HTTP или HTTPS.
- Если ресурс является файлом, его URL-адрес будет начинаться со схемы FTP.
- URL адреса электронной почты будет начинаться с протокола mailto.
- При изменении местоположения ресурса соответствующий URL-адрес также изменится. Это потому, что URL-адрес зависит от местоположения.
Примеры URL:
- https://www.cordcuttersnews.com/category/news/covering-the-world-of-free-legal-streaming-services/
- https://corporate.pluto .tv/спасибо за просмотр/
- https://www.hypr.com/asymmetric-encryption/
Единое имя ресурса
Единое имя ресурса — это унифицированный идентификатор ресурса, который классифицирует ресурс, используя его имя в определенном пространстве имен. Его можно использовать для ссылки на ресурс без указания местоположения или способа доступа к нему. Однако URN не зависит от местоположения. Он продолжает существовать, даже если ресурс больше не существует или недоступен.
Кроме того, в отличие от URL-адресов, URN не указывают протокол, который они используют. URN состоит из трех частей: urn метки, двоеточия и последовательности символов в качестве идентификатора.
URL vs. URN
URL | URN |
Идентифицирует веб-страницы. | Идентифицирует ресурсы. |
Зависит от местоположения. | Не зависит от местоположения. |
В нем упоминается протокол, используемый для обнаружения или доступа к веб-странице. | Протокол, используемый для обнаружения ресурса, не упоминается. |
Когда веб-страница местоположения изменяется или становится недоступной, URL-адрес меняется. | URN существует, даже когда ресурс становится недоступным или его местоположение изменяется. |
Контекст и приложения
Единый идентификатор ресурса — широко используемая концепция в основах Интернета и веб-разработки. Он включен в курсы бакалавриата и магистратуры, такие как:
- Бакалавриат в области компьютерных приложений
- Бакалавр в области инженерии (компьютерные науки)
- Сертификаты в области веб-дизайна и веб-разработки
- Магистр компьютерных приложений
- Магистр инженерных наук (информатика)
Практические задачи
1. Какой из приведенных ниже вариантов является допустимой формой URL-адреса?
- http://www.abc.org/sigmod
- www.google.com
- www.xyz.in
- http://www.abc.org/sigmod/
Ответ: Вариант a
Объяснение: Единый указатель ресурсов — это уникальное имя идентификатора для каждого документа в Интернете. Из приведенных выше вариантов только http://www.abc.org/sigmod соответствует требованиям URL-адреса.
2. В URL — http://www.google.com/search?q=silberschatz, какой аргумент используется для обработки URL?
- Google.com
- процентное кодирование
- q=silberschatz
Ответ: Вариант d
Объяснение. Аргументу или запросу в URL предшествует? символ. Следовательно, аргумент будет q=silberschatz.
3. Для чего нужен единый идентификатор ресурса в HTML?
- Для настройки изображения с веб-страницы с использованием ссылок URI
- Чтобы найти пространство имен или номера, такие как +1-816-555-1212
- Идентифицировать имя или ресурс в Интернете
- Чтобы найти ссылки на базовый URI
Ответ: имя или ресурс в Интернете.
4. Как называется адрес расположения HTML-документов?
- Унифицированный указатель ресурсов
- Базовый справочный протокол URI
- Относительный эталонный веб-сервер
- Процентное кодирование файла
Ответ: Вариант a
Объяснение: URL-адрес используется для определения адреса HTML-документа.
5. Что из нижеперечисленного является универсальным идентификатором ресурса, не зависящим от местоположения?
- Единый указатель ресурсов
- Единое имя ресурса
- Относительный ссылочный протокол
- Относительная ссылка пространства имен
Ответ: Вариант b
Объяснение: URN зависит от местоположения. Он находит ресурс независимо от его местоположения и существования.
Распространенные ошибки
Хотя термины URI и URL часто взаимозаменяемы, они имеют разные значения и относятся к разным темам. Обязательно помнить, что URL-адреса являются типами URI.
- Единое соглашение об именах
- Список схем URI
- Пространства имен расширяемого языка разметки (XML)
- Пространство имен
Мы обеспечим вас пошаговыми решениями миллионов задач из учебников, экспертами в данной области в режиме ожидания 24/7, когда вы в тупике, и многое другое.
Ознакомьтесь с примером решения вопросов и ответов по информатике здесь!
*Время ответа зависит от темы и сложности вопроса. Среднее время отклика составляет 34 минуты для платных подписчиков и может быть больше для рекламных предложений.
Определение, основные отличия и многое другое
Развитие веб-сайта Домен
21 декабря 2022 г.
Sopha M.
10 мин Чтение
Хотя в некоторых случаях универсальный идентификатор ресурса (URI) и универсальный указатель ресурса (URL) могут использоваться взаимозаменяемо, это не одно и то же.
Знание разницы между URI и URL-адресом может упростить процесс разработки веб-сайта. Например, вы сможете упростить разработку REST API, поскольку URI или URL-адрес будут идентифицировать каждый ресурс в Интернете.
Короче говоря, основное различие между URI и URL-адресом заключается в том, что первый может быть именем, местоположением или и тем, и другим, тогда как последний предоставляет только местоположение ресурса.
В этой статье мы более подробно объясним различия между URI и URL, а также их структуру. Кроме того, мы включим варианты использования как URI, так и URL, вместе с их плюсами и минусами.
Что такое URI
URI или универсальный идентификатор ресурса — это строка символов, которая обычно идентифицирует любой веб-ресурс, используя имя, местоположение или и то, и другое. Унифицированный указатель ресурса (URL) и универсальное имя ресурса (URN) — это два типа URI.
Различия между URI и URL
Ознакомьтесь со сравнительной таблицей ниже, чтобы лучше понять основные различия между URI и URL.
УИН | URL-адрес |
URI — это аббревиатура от универсального идентификатора ресурса. | URL-адрес — это аббревиатура от универсального указателя ресурсов. |
URI — это надмножество URN и URL. | URL-адрес является подмножеством URI. |
URI идентифицирует ресурс и отличает его от других, используя имя, местоположение или и то, и другое. | URL-адрес определяет веб-адрес или местоположение уникального ресурса. |
URI содержит такие компоненты, как схема, полномочия, путь и запрос. | URL-адрес имеет компоненты, аналогичные URI, но его полномочия состоят из доменного имени и порта. |
Пример URI: ISBN 0-476-35557-4. | Примером URL-адреса может быть https://hostinger.com. |
URI обычно используется в XML, файлах библиотеки тегов и других файлах, таких как JSTL и XSTL. | URL-адрес в основном предназначен для поиска веб-страниц в Интернете. |
Схема URI может быть протоколом, спецификацией или обозначением, таким как HTTP, файл или данные. | Схема URL — это протокол, такой как HTTP и HTTPS. |
Типы URI
Выяснив ключевые различия между URI и URL, давайте подробно сосредоточимся на двух типах URI.
Унифицированные имена ресурсов (URN)
URN — это постоянный и независимый от местоположения идентификатор, предназначенный для постоянной идентификации ресурса. Это означает, что ресурс остается действительным, даже если его данные перемещаются в другое место.
Для этого URN использует схему для различения ресурсов. Например, urn:isbn:0405999832
идентифицирует книгу, используя номера ISBN.
Каждое универсальное имя ресурса (URN) состоит как минимум из трех компонентов:
- URN – каждый URN использует префикс urn: спецификация схемы.
- NID — относится к идентификатору пространства имен, который должен быть зарегистрирован в Администрации адресного пространства Интернета (IANA). Это могут быть буквы, цифры или дефис, за которым следует двоеточие.
- НСС — это строка, относящаяся к пространству имен, которая идентифицирует интернет-ресурс. Он может содержать коды ASCII, цифры, знаки препинания и специальные символы.
Унифицированные указатели ресурсов (URL)
URL-адрес определяет метод получения представления о физическом расположении посредством описания основного механизма доступа или его сетевого расположения. Ресурсы, которые он пытается найти, могут быть веб-страницей, видео, изображением или любым документом, опубликованным в Интернете.
В отличие от URN, этот идентификатор интернет-ресурса не всегда является постоянным и независимым от местоположения, поскольку он указывает путь к ресурсу, который может меняться со временем. Кроме того, URL-адрес не соответствует схеме URN.
Основное различие между обоими идентификаторами заключается в том, что URN указывает только имя ресурса, в то время как URL-адресу требуется метод доступа или протоколы для получения местоположения ресурса.
Короче говоря, все URL-адреса являются URI, но не все URI являются URL-адресами.
Синтаксис URI
Синтаксис универсального идентификатора ресурса (URI) определяет его структуру, позволяя программе понять его. Вот общий синтаксис URI:
схема:[//авторитет]путь[?запрос][#фрагмент]
Теперь давайте рассмотрим элементы синтаксиса URI:
Схема
Схема — это первое компонент URI, определяющий систему адресации. В некоторых случаях схемы URI представляют собой протокол, используемый для доступа к ресурсу. Между тем, другие методы могут не указывать какой-либо протокол.
Например, схема about: используется в веб-браузерах, где ресурс встроен в клиент и не связан ни с каким конкретным протоколом.
Может содержать любую комбинацию букв, цифр, плюсов, точек или дефисов, за которыми следует двоеточие. Наиболее распространенные схемы URI включают HTTP, HTTPS, FTP, mailto и файл.
Например, если URI — file:website. com/pathtofile/intro.pdf
, имя схемы — file .
Компонент полномочий
Это необязательный компонент, которому предшествует двойная косая черта и завершается косой чертой, знаком вопроса или решеткой. Он состоит из трех подкомпонентов:
- Userinfo – включает имя пользователя и пароль, разделенные двоеточием.
- Хост — состоит либо из IP-адреса, либо из зарегистрированного имени. IP-адрес должен быть заключен в скобки.
- Порт — протокол, используемый для подключения к серверу. Это необязательный подкомпонент, за которым следует двоеточие.
Например, авторитетный компонент из file:website.com/pathtofile/intro.pdf
— это Website.com/ .
Путь
Путь содержит последовательность сегментов данных, описывающую расположение ресурса в структуре каталогов. Он должен быть пустым или разделен косой чертой. Например, telnet://192.0.2.16:80/
или foo://info.example.com?fred
— допустимый URI с пустым путем, поскольку нет указания на конкретное расположение ресурса.
Компонент запроса
Запрос — это необязательный компонент, содержащий строку запроса неиерархических данных. Часто это строка из пар ключ=значение . Этому компоненту предшествует вопросительный знак. Например, если URI — https://example.org/test/test1?search=test-question#part2
, компонент запроса — search=test-question .
Компонент фрагмента
Этот необязательный компонент включает идентификатор фрагмента, указывающий направление к вторичному ресурсу. Он относится к другому разделу основного ресурса. Фрагменту предшествует символ решетки, и он заканчивается концом URI.
Например, компонент фрагмента из https://example.org/test/test1?search=test-question#part2
равен part2 .
Что такое URL-адрес
URL-адрес или универсальный указатель ресурса — это идентификатор, который указывает только местоположение веб-страницы. Это относится к веб-адресу и возможностям доступа к нему, таким как HTTP, FTP и mailto.
Синтаксис URL-адреса
Каждый URL-адрес должен соответствовать синтаксису URI, который имеет структуру, аналогичную URI. Ниже приведен пример синтаксиса URL:
https://www.example.com/forum/questions/?tag=networking&order=newest#top
Приведенный выше URL можно разделить на следующие компоненты:
Схема
Первая часть синтаксис URL — это протокол, используемый для извлечения ресурса. Схема URL-адреса определяет тип приложения, которое ваше устройство использует для открытия URL-адреса. Например, FaceTime использует схему URL facetime:// для совершения звонков. Другие наиболее часто используемые протоколы для схем URL включают:
- Протокол передачи гипертекста (HTTP) — позволяет пользователям получать доступ к данным с веб-страниц с помощью гипертекстовых ссылок.
- Безопасный протокол передачи гипертекста (HTTPS) — защищает передачу данных между браузером пользователя и сайтом.
- Протокол передачи файлов (FTP) — используется для передачи файлов между различными устройствами по сети.
Кроме того, некоторые протоколы URL-адресов используют ссылку mailto для идентификации адресов электронной почты или JDBC для указания доступа к базе данных в соответствии с требованиями пользователя.
Полномочия
Перед этим компонентом стоит двойная косая черта. Он содержит два подкомпонента — доменное имя и порт , ресурс, к которому вы обращаетесь. Доменное имя — это зарегистрированное имя ресурса, например hostinger.com или google.com .
Pro Tip
Если у вас есть хорошая идея для вашего доменного имени, не забудьте проверить ее доступность в инструменте поиска доменных имен.
Что касается порта, это конкретный номер, который определяет, какую веб-службу вы запрашиваете на веб-сервере. Например, номер порта для URL-адреса HTTP — 80, а для URL-адреса HTTPS — 443. Однако, если веб-сервер использует стандартный протокол, такой как HTTP или HTTPS, порт обычно не указывается в URL-адресе.
Путь
Этот элемент определяет конкретное расположение веб-страницы, сообщения или других файлов, к которым пользователи хотят получить доступ в доменном имени. Путь также содержит любое расширение файла ресурса, например изображения и документы.
Однако не все URL-адреса отображают компонент пути. На многих современных веб-серверах вы можете не увидеть компонент пути, поскольку его можно опустить для сокращения URL-адресов. Некоторые примеры путей: …/software/htp/index.html
или …/forum/question/.
Строка запроса
Эта строка предоставляет данные о ресурсе на веб-сервере, и ей предшествует вопросительный знак. Обычно он содержит пары ключ-значение, разделенные амперсандом. Например, ?tag=networking&order=newest.
В строке запроса хранятся данные, поскольку протокол HTTP не имеет состояния. Это означает, что каждый запрос независим и не связан с предыдущим запросом. В результате соединение между браузером и веб-сервером будет автоматически закрыто после завершения запроса клиента.
Кроме того, строка известна как параметры запроса URL, которые можно использовать для некоторых целей, например для результатов поиска веб-страницы. Это поможет пользователям просматривать контент с ресурса. Например, пользователи могут легко найти информацию о товарах в интернет-магазине.
Идентификаторы фрагментов
Идентификатор фрагмента или якорь обычно появляется в конце URL-адреса и начинается со знака решетки. Это необязательный компонент для направления веб-браузера на вторичный ресурс. Он относится к определенному разделу на веб-странице.
На HTML-странице браузер переходит к определенному разделу, помеченному фрагментом.
Например, если URL-адрес https://example.com/results.html#intro
, он будет напрямую вести к тегу intro на странице с именем results.html .
Причины использования универсального идентификатора ресурса (URI)
Использование URI помогает создавать стандартные правила использования ресурса, включая доступ, обновление, поиск или загрузку. Он обеспечивает простой способ идентификации интернет-ресурсов.
Вот три варианта использования URI:
- Аудиовизуальные произведения — ISAN — это серийный кодовый номер, используемый для идентификации аудиовизуальных произведений и версий, таких как фильмы, телевизионные программы или документальные фильмы. Используя схему urn:, URI может идентифицировать ISAN без протокола или способа доступа к нему. Например,
urn:isan:0000-0000-2CEA-0000-1-0000-0000-Y
, что относится к фильму «Человек-паук» 2002 года. Он идентифицирует ресурс с помощью аудиовизуального номера, не сообщая пользователю, где его найти. - Телефонные номера — URI может идентифицировать ресурс с помощью строки набора номера, которая имеет точку завершения сети (NTP), содержащую информацию, необходимую для маршрутизации вызова. Схема tel: представляет собой только глобальный уникальный идентификатор (GUID) и не относится к какому-либо физическому устройству. Например,
тел:+1-816-555-6666
описывает GUID как стандартный номер телефона в США. - Удаленный доступ — Telnet — это сетевой протокол, в котором URI используют его для указания доступа к удаленному компьютеру или хосту через Интернет. Например,
телнет://192.0.2.16:80/.
Telnet обычно используется для удаленного тестирования или устранения неполадок веб-серверов или почтовых серверов.
Теперь давайте посмотрим, какие преимущества и недостатки имеет URI:
Плюсы :
- Однозначный идентификатор — URI может предотвратить двусмысленность, предоставляя уникальные схемы для идентификации ресурсов и их дифференциации в семантической сети. Это помогает структуре описания ресурсов (RDF) интерпретировать информацию для пользователей. Таким образом, не будет путаницы между веб-документами и другими ресурсами.
- Единообразие — URI идентифицирует имя и расположение ресурса. Кроме того, в одном и том же контексте могут использоваться различные типы идентификаторов ресурсов. Например, URL-адрес и URI могут ссылаться на один и тот же ресурс. Единообразие относится к общему синтаксису URI, которому следует следовать.
- Идентификация абстрактных и физических ресурсов — схемы URI могут указывать любой ресурс, включая объекты реального мира, такие как номера телефонов, места, книги и люди. Ресурс не обязательно ограничен веб-страницами, доступными через Интернет.
- Несколько URI могут быть связаны с одним ресурсом — например, данные по
http://www.example.com/abc/2022/Q1
также могут быть доступны по адресуhttp://www.example.com /abc/Q12022
. Это облегчит клиент-серверу обращение к ресурсу.
Минусы :
- URI должны быть постоянными — после того, как вы создали URI, его изменение может повредить репутации вашего сайта. Даже если вы все еще можете перекодировать неработающие URL-адреса, это требует времени и усилий.
- Несовместимо со всеми браузерами — хотя URI можно использовать во многих популярных браузерах, таких как Google Chrome и Mozilla Firefox, некоторые старые версии браузеров, такие как Internet Explorer 5,6,7 или Safari 5 и 6, не поддерживаются Схема URI.
Причины использования унифицированного указателя ресурсов (URL)
Как и URI, URL-адрес используется для идентификации ресурса. Оба имеют тонкие различия с точки зрения их назначения и структуры. Имейте в виду, что большинство URL-адресов предоставляют протокол. Вот несколько вариантов использования URL:
- Ссылка на адрес электронной почты — URL-адрес может указывать адрес электронной почты с использованием схемы mailto: . Он предоставляет гиперссылку для отправки электронной почты непосредственно со страницы HTML. Например,
mailto:[email protected].
- Получение веб-страниц — наиболее распространенные URL-адреса относятся к веб-адресу. Он содержит протокол, доменное имя и путь. Он также известен как абсолютный URL. Например,
https://www.example.com/news/business/
сообщает вам адрес и каталог ресурса. - Перенаправление ресурса — вы можете использовать URL-адрес для перенаправления старого ресурса в новое место. Обычно используется для перемещения веб-страницы. Например, если вы изменили адрес своего веб-сайта с
https://www.blog.example.com
наhttps://www.example.com/blog
, вы можете реализовать переадресацию 301. Это предотвратит получение посетителями различных кодов состояния HTTP, таких как страница с ошибкой 404. - Ссылка на внутреннюю страницу — URL-адреса могут отображаться без протокола и имени домена, но указывает только путь. Он используется для ссылки на определенный файл в том же домене, который можно назвать относительным URL-адресом. Например, если URL-адрес
https://www.example.com/news/business/
, относительный URL-адрес будет /news/business /.
Каждый URL-адрес состоит из нескольких компонентов, которые влияют на безопасность вашего сайта и поисковую оптимизацию (SEO). Узнаем о его плюсах и минусах.
Pros :
- Расширение возможностей пользователей — хорошо структурированный URL-адрес поможет пользователям понять, к какой странице они обращаются. Например, если на веб-странице веб-сайта www.example.com есть тег заголовка «Рецепт шоколадного пудинга к Рождеству», ваш URL-адрес может быть
http://example.com/recipes/chocolate-pudding
для описания страницы. содержание четко. - Повышение рейтинга сайта . Помимо авторитета домена, ключевые слова в URL-адресах играют роль второстепенного фактора ранжирования вашего сайта. Это может повлиять на страницы результатов поисковой системы (SERP) при анализе конкретной страницы или релевантности ресурса.
- Защитите свой сайт — использование URL-адресов HTTPS может защитить ваш сайт и конфиденциальность посетителей более надежно, чем HTTP. Это связано с тем, что HTTPS поставляется с сертификатом Secure Sockets Layer (SSL), который обеспечивает зашифрованное соединение между веб-сервером и веб-браузером для передачи данных.
Минусы :
- Угроза безопасности — создание сокращенного URL-адреса также может поставить под угрозу репутацию вашего сайта. Многие хакеры используют сокращатели URL-адресов, такие как Bitly, owl.ly, AdF.ly и TinyURL, чтобы скрыть свои злонамеренные намерения от пользователей. Пример сокращенного URL: 9.0407 http://bitly.is/example , где не видно домена сайта.
- Кража контента — использование относительных URL-адресов может быть рискованным для кражи контента, поскольку людям не нужно переписывать какие-либо внутренние ссылки. Они могут легко скопировать вашу страницу и разместить ее на новом домене с помощью парсера.
- Мертвая ссылка — это может произойти, когда вы используете службу сокращения URL-адресов. Это связано с тем, что служба может выйти из строя или даже прекратить работу, в результате чего ваша ссылка не будет работать.
Pro Tip
Хорошие URL-адреса должны быть простыми, четкими и краткими. Таким образом, пользователи могут получить представление о том, чего ожидать на странице.
Заключение
Понимание различий между URI и URL и их использованием важно для каждого веб-мастера. Например, создание REST API с использованием предсказуемой и иерархической структуры URI или URL-адреса может повысить производительность REST API.
URI обозначает универсальный идентификатор ресурса, строку символов, которая обычно идентифицирует ресурс с помощью имя, местоположение или и то, и другое в Интернете. Кроме того, URI может различать типы файлов и других ресурсов.
С другой стороны, URL-адрес или унифицированный указатель ресурса представляет собой строку символов, которая показывает адрес ресурса и способ доступа к нему на веб-странице. Поскольку URL-адрес является частью URI, они имеют схожую структуру.
Мы надеемся, что эта статья помогла вам понять разницу между URI и URL и когда их использовать.