200 | OK | «Успешно». Запрос успешно обработан. |
201 | Created | «Создано». Запрос успешно выполнен и в результате был создан ресурс. Этот код обычно присылается в ответ на запрос PUT «ПОМЕСТИТЬ». |
202 | Accepted | «Принято». Запрос принят, но ещё не обработан. Не поддерживаемо, т.е., нет способа с помощью HTTP отправить асинхронный ответ позже, который будет показывать итог обработки запроса. Это предназначено для случаев, когда запрос обрабатывается другим процессом или сервером, либо для пакетной обработки. |
203 | Non-Authoritative Information | «Информация не авторитетна». Этот код ответа означает, что информация, которая возвращена, была предоставлена не от исходного сервера, а из какого-нибудь другого источника. Во всех остальных ситуациях более предпочтителен код ответа 200 OK. |
204 | No Content | «Нет содержимого». Нет содержимого для ответа на запрос, но заголовки ответа, которые могут быть полезны, присылаются. Клиент может использовать их для обновления кешированных заголовков полученных ранее для этого ресурса. |
205 | Reset Content | «Сбросить содержимое». Этот код присылается, когда запрос обработан, чтобы сообщить клиенту, что необходимо сбросить отображение документа, который прислал этот запрос. |
206 | Partial Content | «Частичное содержимое». Этот код ответа используется, когда клиент присылает заголовок диапазона, чтобы выполнить загрузку отдельно, в несколько потоков. |
300 | Multiple Choice | «Множественный выбор». Этот код ответа присылается, когда запрос имеет более чем один из возможных ответов. И User-agent или пользователь должен выбрать один из ответов. Не существует стандартизированного способа выбора одного из полученных ответов. |
301 | Moved Permanently | «Перемещён на постоянной основе». Этот код ответа значит, что URI запрашиваемого ресурса был изменен. Возможно, новый URI будет предоставлен в ответе. |
302 | Found | «Найдено». Этот код ответа значит, что запрошенный ресурс временно изменен. Новые изменения в URI могут быть доступны в будущем. Таким образом, этот URI, должен быть использован клиентом в будущих запросах. |
303 | See Other | «Просмотр других ресурсов». Этот код ответа присылается, чтобы направлять клиента для получения запрашиваемого ресурса в другой URI с запросом GET. |
304 | Not Modified | «Не модифицировано». Используется для кэширования. Это код ответа значит, что запрошенный ресурс не был изменен. Таким образом, клиент может продолжать использовать кэшированную версию ответа. |
305 | Use Proxy | «Использовать прокси». Это означает, что запрошенный ресурс должен быть доступен через прокси. Этот код ответа в основном не поддерживается из соображений безопасности. |
306 | Permanent Redirect | «Перенаправление на постоянной основе». Это означает, что ресурс теперь постоянно находится в другом URI, указанном в заголовке Location: HTTP Response. Данный код ответа имеет ту же семантику, что и код ответа 301 Moved Permanently, за исключением того, что агент пользователя не должен изменять используемый метод HTTP: если POST использовался в первом запросе, POST должен использоваться и во втором запросе. |
400 | Bad Request | «Плохой запрос». Этот ответ означает, что сервер не понимает запрос из-за неверного синтаксиса. |
401 | Unauthorized | «Неавторизовано». Для получения запрашиваемого ответа нужна аутентификация. Статус похож на статус 403, но,в этом случае, аутентификация возможна. |
402 | Payment Required | «Необходима оплата». Этот код ответа зарезервирован для будущего использования. Первоначальная цель для создания этого когда была в использовании его для цифровых платежных систем(на данный момент не используется). |
403 | Forbidden | «Запрещено». У клиента нет прав доступа к содержимому, поэтому сервер отказывается дать надлежащий ответ. |
404 | Not Found | «Не найден». Сервер не может найти запрашиваемый ресурс. Код этого ответа, наверно, самый известный из-за частоты его появления в вебе. |
405 | Method Not Allowed | «Метод не разрешен». Сервер знает о запрашиваемом методе, но он был деактивирован и не может быть использован. Два обязательных метода, GET и HEAD, никогда не должны быть деактивированы и не должны возвращать этот код ошибки. |
406 | Not Acceptable | Этот ответ отсылается, когда веб сервер после выполнения server-driven content negotiation, не нашел контента, отвечающего критериям, полученным из user agent. |
407 | Proxy Authentication Required | Этот код ответа аналогичен коду 401, только аутентификация требуется для прокси сервера. |
408 | Request Timeout | Ответ с таким кодом может прийти, даже без предшествующего запроса. Он означает, что сервер хотел бы отключить это неиспользуемое соеднинение. Этот метод используется все чаще с тех пор, как некоторые браузеры, вроде Chrome и IE9, стали использовать HTTP механизмы предварительного соединения для ускорения серфинга (смотрите баг 634278, будущей реализации этого механизма в Firefox). Также учитывайте, что некоторые серверы прерывают соединения не отправляя подобных сообщений. |
409 | Conflict | Этот ответ отсылается, когда запрос конфликтует с текущим состоянием сервера. |
410 | Gone | Этот ответ отсылается, когда запрашиваемый контент удален с сервера. |
411 | Length Required | Запрос отклонен, потому что сервер требует указание заголовка Content-Length, но он не указан. |
412 | Precondition Failed | Клиент указал в своих заголовках условия, которые сервер не может выполнить |
413 | Request Entity Too Large | Размер запроса превышает лимит, объявленный сервером. Сервер может закрыть соединение, вернув заголовок Retry-After |
414 | Request-URI Too Long | URI запрашиваемый клиентом слишком длинный для того, чтобы сервер смог его обработать |
415 | Unsupported Media Type | Медиа формат запрашиваемых данных не поддерживается сервером, поэтому запрос отклонен |
416 | Requested Range Not Satisfiable | Диапозон указанный заголовком запроса Range не может быть выполнен; возможно, он выходит за пределы переданного URI |
417 | Expectation Failed | Этот код ответа означает, что ожидание, полученное из заголовка запроса Expect, не может быть выполнено сервером. |
500 | Internal Server Error | «Внутренняя ошибка сервера». Сервер столкнулся с ситуацией, которую он не знает как обработать. |
501 | Not Implemented | «Не выполнено». Метод запроса не поддерживается сервером и не может быть обработан. Единственные методы, которые сервера должны поддерживать (и, соответственно, не должны возвращать этот код) — GET и HEAD. |
502 | Bad Gateway | «Плохой шлюз». Эта ошибка означает что сервер, во время работы в качестве шлюза для получения ответа, нужного для обработки запроса, получил недействительный (недопустимый) ответ. |
503 | Service Unavailable | «Сервис недоступен». Сервер не готов обрабатывать запрос. Зачастую причинами являются отключение сервера или то, что он перегружен. Обратите внимание, что вместе с этим ответом удобная для пользователей(user-friendly) страница должна отправлять объяснение проблемы. Этот ответ должен использоваться для временных условий и Retry-After: HTTP-заголовок должен, если возможно, содержать предполагаемое время до восстановления сервиса. Веб-мастер также должен позаботиться о заголовках, связанных с кэшем, которые отправляются вместе с этим ответом, так как эти ответы, связанные с временными условиями, обычно не должны кэшироваться. |
504 | Gateway Timeout | Этот ответ об ошибке предоставляется, когда сервер действует как шлюз и не может получить ответ вовремя. |
505 | HTTP Version Not Supported | «HTTP-версия не поддерживается». HTTP-версия, используемая в запроcе, не поддерживается сервером. |
Руководство по HTTP. Коды статусов. – PROSELYTE
Код статуса представляет собой ответ сервера, который состоит из трёх цифр. Первая определяет класс ответа, а две другие указывают конкретный ответ.
Существует пять основных категорий кодов статусов. Все они приведены ниже:
№ | Код и описание |
---|---|
1 | 1xx: Информационное Означает, что запрос был успешно получен и идёт его обработка. |
2 | 2xx: Успешное выполнение Запрос был успешно получен, понят и принят. |
3 | 3xx: Перенаправление Последующие действия должны быть предприняты для выполнения запроса. |
4 | 4xx: Ошибка на стороне клиент Запрос содержит синтаксическую ошибку, либо не корректен. |
5 | 5xx: Ошибка на стороне сервера Сервер не может выполнить обработать корректный запрос. |
Коды статусов расширяемы и HTTP приложение не должно понимать значение всех кодов.
Ниже приведены наиболее распространённые код статусов по категориям.
1ХХ: Информационные
Сообщение | Описание |
---|---|
100 Continue | Только часть запроса была получена сервером, но на данный момент запрос не был отклонён. Клиент должен продолжать запрос. |
101 Switching Protocols | Сервер выбирает протокол. |
2ХХ: Успешное выполнение
Сообщение | Описание |
---|---|
200 OK | Запрос успешен |
201 Created | Запрос выполнен, новый ресурс создан. |
202 Accepted | Запрос принят, но обработка не завершена. |
203 Non-authoritative Information | Информация в заголовке получена из локальной или сторонней копии, а не от оригинального сервера. |
204 No Content | Код статуса и заголовок переданы в ответе, но данные отсутствуют. |
205 Reset Content | Браузер должен очистить форму для этой транзакции для дополнительного ввода. |
206 Partial Content | Сервер возвращает часть данных. Используется для ответа на запрос, содержащий заголовок Content-Range. |
3ХХ: Перенаправление
Сообщение | Описание |
---|---|
300 Multiple Choices | Список ссылок. Пользователь может выбрать ссылку и перейти к локации. Максимальное количество ссылок – 5. |
301 Moved Permanently | Запрашиваемая страница была перенесена на новую URL. |
302 Found | Запрашиваемая страница была временно перенесена на новую URL. |
303 See Other | Запрашиваемая страница может быть найдена по другой URL. |
304 Not Modified | Код ответа для заголовка If-Modifier-Since или If-None-Match, где URL не была изменена с крайней даты обновления. |
305 Use Proxy | Доступ к запрашиваемой странице должен быть запрошен через прокси, который указан в заголовке Location. |
306 Unused | Данный код использовался в предыдущей версии, но на данный момент он не используется, а сам код был зарезервирован. |
307 Temporary Redirect | Запрашиваемая страница была временно перенесена на новую URL. |
4ХХ: Ошибка на стороне клиента
Сообщение | Описание |
---|---|
400 Bad Request | Сервер не понял запрос. |
401 Unauthorized | Запрашиваемая страница требует имя пользователя и пароль. |
402 Payment Required | На данный момент клиент не может использовать данный код. |
403 Forbidden | Доступ к запрашиваемой странице запрещён. |
404 Not Found | Сервер не может найти запрашиваемую страницу. |
405 Method Not Allowed | Метод, указанный в запросе, является недопустимым. |
406 Not Acceptable | Сервер генерирует ответ, который не может быть принят клиентом. |
407 Proxy Authentication Required | Клиент должен авторизоваться с помощью прокси-сервера прежде чем запрос сможет быть обработан. |
408 Request Timeout | Запрос длился дольше, чем сервер был готов ждать. |
409 Conflict | Запрос не может быть завершён из-за конфликта. |
410 Gone | Запрашиваемая страница больше недоступна. |
411 Length Required | Элемент “Content-Length” не определён. Сервер не может принять запрос без данного элемента. |
412 Precondition Failed | Сервер признал предусловия запроса ошибочными. |
413 Request Entity Too Large | Сервер не примет данный запрос, так как тело запроса слишком большое. |
414 Request-url Too Long | Сервер не примет данный запроса, так как URL слишком большая (длинная). |
415 Unsupported Media Type | Север не примет данный запрос, так как данный тип медиа файла не поддерживается. |
416 Requested Range Not Satisfiable | Запрашиваемый диапазон байтов недоступен и находится за пределами диапазона. |
417 Expectation Failed | Ожидания, переданные в заголовке запроса не могут быть удовлетворены данным сервером. |
5ХХ: Ошибка на стороне сервера
Сообщение | Описание |
---|---|
500 Internal Server Error | Запрос не выполнен. Сервер попал в непредвиденные условия. |
501 Not Implemented | Запрос не выполнен. Сервер не поддерживает запрашиваемый функционал. |
502 Bad Gateway | Запрос не выполнен. Сервер получил недоступный запрос от следующего сервера. |
503 Service Unavailable | Запрос не выполнен. На данный момент сервер перегружается, или не работает. |
504 Gateway Timeout | Соединение закрыто по времени. |
505 HTTP Version Not Supported | Сервер не поддерживает данную версию протокола HTTP. |
На этом мы заканчиваем изучение код статуса протокола HTTP.
В следующей статье мы рассмотрим поля заголовка (header fields).
HTTP. Методы, статус-коды, заголовки, редиректы, SSL
Миша Радионов
Опубликовано: 06 мая 2021
Вернуться в блог
Содержание
- Видео
- HTTP
- Структура HTTP-запросов и ответов
- URL запроса
- Методы HTTP-запросов
- Статус-коды ответа
- Заголовки HTTP
- HTTP-редиректы
- SSL шифрование
- Версии HTTP
- HTTP/2
- HTTP/3
Что отличает настоящего айтишника?
Настоящий знает, как работает Интернет. Рассказываем для всех простым языком, как работает HTTP.
Видео
HTTP
Структура HTTP-запросов и ответов
В HTTP и запрос, и ответ имеют похожую структуру:
- URL
- Метод
- Версия HTTP
- Заголовки
- Статус-код (обязательно только для HTTP-ответов)
- Тело (необязательно)
Пример HTTP-запроса:
POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: application/x-www-form-urlencoded Content-Length: length Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive licenseID=string&content=string&/paramsXML=string
, где
POST
— метод,/cgi-bin/process.cgi
— URL,HTTP/1. 1
— версия протокола HTTP,User-Agent
,Host
и другие — заголовкиlicenseID=string&content=string&/paramsXML=string
— тело запроса.
Пример HTTP-ответа:
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache/2.2.14 (Win32) Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT Content-Length: 88 Content-Type: text/html Connection: Closed <html> <body> <h2>Hello, World!</h2> </body> </html>
В данном ответе отсутствует URL и метод, зато появился статус-код 200
, означающий «успех».
URL запроса
Структура URL-адреса
http://blog.example.com:80/catalog/category/knifes?key1=value1&amp;key2=value2#anchor
где
- http:// — протокол
- blog — поддомен (субдомен, домен третьего уровня)
- example — домен (домен второго уровня)
- com — доменная зона (домен первого уровня)
- 80 — порт. Для http — 80, для https — 443
- /catalog/category/knifes — ЧПУ-адрес (человеко-понятный URL)
- key1=value1&key2=value2 — GET параметры запроса
- anchor — якорь
Абсолютные и относительные URL
Абсолютные адреса в проекте — зло. Используйте относительные.
Абсолютный URL
https://developer.mozilla.org/ru/docs/Learn
Абсолютный URL, скрыт протокол
//developer.mozilla.org/ru/docs/Learn
Относительный URL (неправильно) 🚫
ru/docs/Learn
если мы на странице https://domain.ru/ru/about, то преобразуется в https://domain.ru/ru/aboutru/docs/Learn
Относительный URL (правильно) ✅
/ru/docs/Learn
если мы на странице https://domain.ru/ru/about, то преобразуется в https://domain.ru/ru/docs/Learn
Якоря (анкоры)
⚓️Якоря придуманы в HTML, чтобы давать ссылки не просто на HTML-страницу, а на определенное место на странице. Позже якоря стали активно использоваться для передачи параметров в JS.
URL с якорем
https://domain.ru/url#someAnchor
HTML-элемент, на который ведет якорь
<h3 name="someAnchor">Заголовок с якорем</h3>
Методы HTTP-запросов
Если при повторении одного и того же запроса на сервере ничего не меняется, запрос считается идемпотентным. Если повторение одинакового запроса несколько раз изменяет состояние сервера, то он не идемпотентен и, вообще говоря, менее безопасен.
Метод | POST-параметры | Идемпотентность | Предназначение |
---|---|---|---|
GET | нет | да | получает информацию о ресурсе |
POST | да | нет | создает ресурс |
PUT | да | да | заменяет ресурс целиком |
PATCH | да | да | редактирует ресурс |
DELETE | нет | да | удаляет ресурс |
HEAD | нет | да | не получает body, только отправляет и получает HTTP-заголовки |
PUT заменяет существующую сущность. Те элементы сущности, которые не представлены в запросе, будут очищены или заменены на null.
GET и POST параметры
В контексте методов HTTP-запросов стоит упомянуть GET и POST параметры, так как вы будете постоянно с ними встречаться и так проще понять, как используются методы.
GET-параметры передаются в URL запроса. Пример URL с GET-параметрами я приводил выше. Любой из перечисленных ниже методов может иметь или не иметь GET-параметры, это совершенно нормально.
POST-параметры — это любые параметры, передаваемые в теле (body) запроса. POST-параметры не следует использовать для некоторых методов, например, для GET, DELETE и HEAD.
Статус-коды ответа
По группам
- 100 — 199 Информационные
- 200 — 299 Успешные
- 300 — 399 Редиректы
- 400 — 499 Клиентские ошибки
- 500 — 599 Серверные ошибки
Популярные коды ответа
- Для редиректов SEO-шники рекомендуют 301 редиректы.
- 401 не авторизован (юзер не представился)
- 403 запрещено (юзер не уполномочен)
- 404 ресурс не найден
- 418 я чайник
- 419 кука протухла (обычно ошибка проверки CSRF)
- 502 Bad Gateway. Программа веб-сервер (Nginx) получила неправильный ответ от бэкенда (PHP). Скорее всего, что-то сломалось или неправильно настроено на сервере
- 504 Gateway Timeout. Программа веб-сервер устала ждать ответа от бэкенда и отменила запрос к нему. Скорее всего, на бэкенде происходит что-то очень долгое, какое-то большое вычисление. Ну и все равно это не нормально, такого быть не должно.
- 503 Maintenance Mode. На сервере ведутся технические работы.
Коды ответа, как и заголовки, можно посмотреть в браузере на вкладке Network или получить командой curl -I domain.ru
. В отличие от заголовков, коды ответа бывают только в ответе и не используются в запросе.
Заголовки HTTP
Заголовки — часть HTTP-запроса и/или HTTP-ответа, они не видимы пользователю. Представляют собой пары ключ: значение. Заголовки можно посмотреть в браузере на вкладке Network или получить командой curl -I domain.ru
(так можно получить только заголовки ответа сервера).
Заголовки запроса
- Host — ВАЖНО. Домен, по которому мы переходим
- Cookie — куки, отдаваемые браузером серверу
- User-Agent — браузер, которым делаем запрос
- Accept-Language и Accept-Encoding — принимаемые браузером язык и кодировка
- Referer — предыдущая страница
- Authorization — реквизиты для базовой авторизации (логин, пароль)
Заголовки ответа
- Cache-Control — сервер говорит браузеру, как кэшировать данные
- Content-Type — тип и подтип содержимого, а также кодировка и приложение для открытия содержимого. Примеры:
- Content-Type: text/html; charset=UTF-8 — Тип текст, подтип HTML. Кодировка UTF-8
- Content-Type: image/gif — Тип картинка, подтип GIF
- Content-Type: application/pdf — Тип «открываемый внешним приложением», подтип PDF
- Content-Disposition — говорит браузеру, скачивать или открывать документ как веб-страницу
- Location — заголовок для редиректа
- Set-Cookie — сервер передает браузеру куку
- WWW-Authenticate — выводит окно с базовой аутентификацией
- Content-Encoding — сервер говорит браузеру, сжата ли страница и в каком виде
- Server и X-Powered-By — технологии, на которых работает сайт
HTTP-редиректы
Редиректы — способ перенаправить браузер на другой URL. Это похоже на то, как если бы вы пришли в магазин и там увидели надпись «мы переехали, вот наш новый адрес». После этого вы идете в магазин по новому адресу. Важно понимать, что редирект со стороны сайта лишь просит ваш браузер перейти на другой адрес, а не подсовывает вам другую страницу. Другими словами, технически редирект происходит на стороне клиента, а не сервера.
www и http://
Проверка редиректов очень важна для проверки настроек префиксов домена типа www
и http
/https
.
То есть у каждого домена обычно есть 4 варианта написания:
- http://domain.ru
- http://www.domain.ru
- https://domain.ru (обычно основной вариант)
- https://www.domain.ru
И 3 из этих 4 вариантов обязательно должны ссылаться на один из них, то есть на главный. Главный вариант определяет заказчик, но обычно это https://domain.ru
Инструменты
Редиректы можно проверить браузером через вкладку Network
Разработчикам будет удобнее воспользоваться утилитой
curl -I -L https://domain. ru
Как сбросить кэш редиректов браузера
На Windows нажать ctrl+H, затем «очистить историю», оставить включенной (отжатой) только галочку напротив «Изображения и другие файлы, сохраненные в кэше». Затем нажать «удалить данные».
Принцип — передача только зашифрованных данных.
Типы SSL-сертификатов
- Платные (Comodo, Thawte, reg.ru)
- Срок — 1 год или более
- Стоимость — от 1500 руб/год
- Let’s Encrypt (обычно мы используем именно LE)
- Срок — 3 месяца
- Стоимость — бесплатно
- Нюанс: Wild Card сертификаты для поддоменов (*.flagstudio.ru). Доступны в LE только при DNS-аутентификации, то есть добавлении TXT-записи, которую нужно обновлять каждые 3 месяца. Для обновления используется API, которое есть не у всех DNS-провайдеров.
Диагностика SSL
Если на сайте проблемы с SSL, то причина — в одном из двух:
- Что-то не так с сертификатом (кончился, выдан не на этот домен или самоподписанный)
- Страница запрашивает что-то по HTTP
На скриншоте видно, как посмотреть подробности о сертификате и наличие ошибок в странице. Конкретно на этом скриншоте показана вторая проблема, так называемая «mixed-content error», то есть часть контента прилетает по HTTP.
Для диагности SSL на вашем сайте вы также можете использовать онлайн-сервис https://www.ssllabs.com/ssltest/ .
Учтите, данные о сертификате, как и HTTP-редиректы, сильно кэшируются браузером. Сбрасываются так же, как кэш редиректов (смотрите выше).
Версии HTTP
HTTP/2
Суть — мультиплексирование запросов по TCP.
Преимущества перед HTTP/1.1
- Скорость. HTTP/2 — бинарный протокол, а HTTP/1.1 — текстовый
- Скорость. Мультиплексирование множества запросов в одном соединении TCP
- Скорость. Сжатие HTTP-заголовков
- Server Push. Принудительная отправка данных сервером в браузер
- Приоритеты запросов
Минусы
- Из-за «head-of-line blocking» на медленном интернете HTTP/1.1 работает быстрее
- Для работы HTTP/2 нужен SSL
Распространение: По данным W3Techs на 1 ноября 2020 года, 49% из 10 млн самых популярных интернет-сайтов поддерживают протокол HTTP/2.
Подробная статья с понятными картинками — https://habr.com/ru/company/nix/blog/304518/
HTTP/3
Суть — мультиплексирование по UDP.
Преимущества перед HTTP/2:
- Решена проблема «head-of-line blocking»
- Шифрование и транспорт объединены, пакеты шифруются независимо
- Протокол реализуется на уровне приложений, а не ОС. Поэтому быстро внедряется
Минусы:
- Протокол реализуется на уровне приложений, а не ОС. Поэтому HTTP/3 использует больше CPU
Результаты: По данным Google, страницы загружаются примерно на 5% быстрее, а в потоковом видео на 30% меньше подвисаний по сравнению с TCP.
Распространение: По данным W3Techs на 1 сентября 2020 года, 7% из 10 млн самых популярных интернет-сайтов поддерживают протокол HTTP/3.
Если у вас появились какие-то вопросы, вы можете задать их в комментариях, а мы на них ответим 🙂
Последние записи блога
Please enable JavaScript to view the comments powered by Disqus.
Коды состояния в HTTP
Коды состояния в HTTP1992 г.
Это исторический документ, и он уже не точен. За актуальную информацию о спецификации HTTP см. в последней черновики HTTP/1.1
Значения числового кода состояния для HTTP-запросы выглядят следующим образом. Данные разделы сообщений Error, Forward и redirection ответы могут быть использованы содержать удобочитаемую диагностическую информацию.
Успех 2xx
Эти коды указывают на успех. Раздел body, если он присутствует, является возвращаемым объектом. по запросу. Это объект формата MIME. Он имеет формат MIME и может быть только в формате text/plain, text/html или в одном из форматов, указанных как допустимые в запросе.
ОК 200
Просьба была выполнена.
СОЗДАН 201
После команды POST это указывает на успех, но текстовая часть в строке ответа указывается URI, по которому вновь созданный документ должен быть известным.
Принято 202
Заявка принята в обработку, но обработка еще не завершена. было завершено. Запрос может быть, а может и не быть выполнен в конечном итоге, поскольку он могут быть запрещены, когда обработка действительно имеет место. нет возможности для возврата состояния из асинхронных операций, таких как эта.
Частичная информация 203
При получении в ответ на команду GET это указывает на то, что возвращаемый метаинформация не является окончательным набором объекта с сервера с копия объекта, но из частной наложенной сети. Это может включать аннотационная информация об объекте, например.
Нет ответа 204
Сервер получил запрос, но нет информации для отправки обратно, и клиент должен оставаться в том же представлении документа. В основном это позволяет ввод для скриптов без одновременного изменения документа.
Ошибка 4хх, 5хх
Коды 4xx предназначены для случаев, когда клиент, похоже, ошибся, и коды 5xx для случаев, когда сервер знает, что сервер ошибся. Различить эти случаи в общем случае невозможно, поэтому разница только информационная.
Раздел body может содержать документ, описывающий ошибку в удобочитаемом виде. форма. Документ находится в формате MIME формате и может быть только в формате text/plain, text/html или одном из указанных форматов. как допустимо в запросе.
Неверный запрос 400
Запрос имел неправильный синтаксис или был невозможен по своей сути.
Неавторизованный 401
Параметр этого сообщения дает спецификацию схем авторизации. которые приемлемы. Клиент должен повторить запрос с подходящим Заголовок авторизации.
PaymentRequired 402
Параметр этого сообщения дает спецификацию схем тарификации. приемлемый. Клиент может повторить запрос с подходящим заголовком ChargeTo.
Запрещено 403
Запрос касается чего-то запретного. Авторизация не поможет.
Не найдено 404
Сервер не нашел ничего, соответствующего указанному URI
Внутренняя ошибка 500
Сервер столкнулся с непредвиденным условием, которое помешало ему выполнить запрос.
Не реализовано 501
Сервер не поддерживает необходимое средство.
Сервис временно перегружен 502 (БУДЕТ ОБСУЖДАТЬСЯ)
Сервер не может обработать запрос из-за высокой нагрузки (будь то HTTP-обслуживание или другие пожелания). Подразумевается, что это временное состояние который может быть смягчен в другое время.
Тайм-аут шлюза 503 (БУДЕТ ОБСУЖДАТЬСЯ)
Это эквивалентно внутренней ошибке 500, но в случае сервера, который в свою очередь обращается к какой-либо другой службе, это указывает на то, что ответ из другой службы не вернулся в течение времени, когда шлюз был готов ждать. Как с точки зрения клиента и HTTP-транзакции другая служба скрыта на сервере, это может рассматриваться одинаково до Internal error 500, но имеет больше диагностическое значение.
Примечание: Коды 502 и 503 являются новыми и обсуждаются, сентябрь 19, 1994
Коды в этом разделе указывают на действие, которое необходимо предпринять (обычно автоматически). клиентом для выполнения запроса.
Перемещено 301
Запрошенным данным присвоен новый URI, изменение является постоянным. (N.B. это оптимизация, которая должна быть прагматически включена в это определение. Браузеры с возможностью редактирования ссылок должны автоматически ссылка на новую ссылку, где это возможно)
Ответ содержит одну или несколько строк заголовка вида
URI:Строка CrLf
Которые указывают альтернативные адреса для рассматриваемого объекта. Струна необязательное поле комментария. Если ответ должен указать набор вариантов каждый из которых соответствует запрошенному URI, то составная/альтернативная упаковка может использоваться для различения различных наборов
Найдено 302
Запрошенные данные фактически находятся по другому URL-адресу, однако перенаправление может быть иногда изменено (при размещении ссылок на такие виды документа браузер должен по умолчанию использовать Udi перенаправления документ, но есть возможность ссылки на окончательный документ) как для «Вперед».
Формат ответа такой же, как и для Moved .
Метод 303
Метод: <метод>часть тела
Примечание: Этот код состояния необходимо указать более подробно. За пока только для обсуждения.
Как и найденный ответ, это говорит о том, что клиент должен попробовать другую сеть. адрес. В этом случае вместо GET можно использовать и другой метод.
Раздел body содержит параметры, которые будут использоваться для метода. Этот позволяет документу быть указателем на сложную операцию запроса.
Перед телом могут стоять следующие дополнительные поля как указано.
Не изменено 304
Если клиент выполнил условный GET и доступ разрешен, но документ не изменялся с даты и времени, указанных в Если-Изменено-С поле, сервер отвечает кодом состояния 304 и не отправляет документ тело клиенту.
Заголовки ответа такие же, как если бы клиент отправил запрос HEAD, но с ограничениями. только те заголовки, которые имеют смысл в данном контексте. Это означает, что только заголовки которые имеют отношение к менеджерам кеша и которые могли измениться независимо даты последнего изменения документа. Примеры включают Date , Server и Истекает .
Цель этой функции — обеспечить эффективное обновление локального кеша. информации (включая соответствующую метаинформацию), не требуя накладных расходов нескольких HTTP-запросов (например, HEAD, за которым следует GET) и минимизировать передача информации, уже известной запрашивающему клиенту (обычно кеширующий прокси).
Что такое коды состояния HTTP? Список важных кодов состояния
Что такое коды состояния HTTP?
Код состояния HTTP — это ответ сервера на запрос браузера. Когда вы посещаете веб-сайт, ваш браузер отправляет запрос на сервер сайта, а затем сервер отвечает на запрос браузера трехзначным кодом: кодом состояния HTTP.
Эти коды состояния являются интернет-эквивалентом диалога между вашим браузером и сервером. Они сообщают, все ли между ними в порядке, в порядке или что-то не так. Понимание кодов состояния и способов их использования поможет вам быстро диагностировать ошибки сайта, чтобы свести к минимуму время простоя вашего сайта. Вы даже можете использовать некоторые из этих кодов состояния, чтобы помочь поисковым системам и людям получить доступ к вашему сайту; например, перенаправление 301 сообщит ботам и людям, что страница переместилась в другое место навсегда.
Первая цифра каждого трехзначного кода состояния начинается с одной из пяти цифр от 1 до 5; вы можете видеть, что это выражается как 1xx или 5xx для обозначения кодов состояния в этом диапазоне. Каждый из этих диапазонов охватывает разные классы ответов сервера.
Общие классы кодов состояния HTTP:
1xxs — Информационные ответы: Сервер обрабатывает запрос.
2xxs – Успех! Запрос был успешно выполнен, и сервер дал браузеру ожидаемый ответ.
3xxs – Перенаправление: Вас перенаправили куда-то еще. Запрос получен, но есть какая-то переадресация.
4xxs — Ошибки клиента: Страница не найдена. Не удалось получить доступ к сайту или странице. (Запрос был сделан, но страница недействительна — это ошибка на стороне веб-сайта и часто появляется, когда страница не существует на сайте.)
5xxs — Ошибки сервера: Сбой. Клиент сделал действительный запрос, но сервер не смог выполнить запрос.
Наиболее важные коды состояния для SEO-специалистов
Каждому профессиональному SEO-специалисту и владельцу веб-сайта важно понимать коды состояния, которые оказывают наибольшее влияние на SEO.
Представьте, что вы работаете над сайтом, который показывает много ошибок 5xx; вы сразу же захотите узнать, что это проблема сервера. Ошибки 4xx влияют на взаимодействие с посетителями, поэтому вы сразу же можете начать думать о любых изменениях, которые вы могли внести в свои URL-адреса, или о том, были ли у вас удалены какие-либо страницы. Как только вы поймете причину проблемы, вы можете рассмотреть возможность реализации пользовательской страницы 404 или использовать всемогущую переадресацию 301 для отправки посетителей в нужное место.
Стоит выучить — и запомнить — самые важные коды состояния, которые должен знать каждый оптимизатор:
Код состояния HTTP 200 — OK
Это ваш идеальный код состояния для вашей обычной, повседневной, правильно функционирующей страницы. Посетители, боты и ссылочный вес проходят через связанные страницы как сон. Вам не нужно ничего делать, и вы можете счастливо провести свой день, зная, что все так, как должно быть.
Код состояния HTTP 301 — постоянное перенаправление
Перенаправление 301 следует использовать каждый раз, когда один URL-адрес необходимо постоянно перенаправлять на другой . Перенаправление 301 означает, что посетители и боты, попадающие на эту страницу, будут перенаправлены на новый URL. Кроме того, ссылочный вес — сила, передаваемая всеми этими с трудом заработанными ссылками на ваш контент, — также передается новому URL-адресу через переадресацию 301. Несмотря на заявления Google о том, что все редиректы 3xx обрабатываются одинаково, тесты показали, что это не совсем так. Перенаправление 301 остается предпочтительным методом для постоянных перенаправлений страниц.
Код состояния HTTP 302 — временное перенаправление
Перенаправление 302 похоже на 301 в том смысле, что посетители и боты переходят на новую страницу, но ссылочный вес может не передаваться. Мы не рекомендуем использовать переадресацию 302 для постоянных изменений. Использование 302 заставит сканеры поисковых систем рассматривать перенаправление как временное, а это означает, что оно может не проходить по ссылочному весу, как это делает магический 301.
Код состояния HTTP 404 — Not Found
Это означает, что файл или страница, которую запрашивает браузер, не были найдены сервером. Ошибка 404 не указывает, отсутствует ли отсутствующая страница или ресурс постоянно или только временно. Вы можете увидеть, как это выглядит на вашем сайте, введя несуществующий URL-адрес. Это как врезаться в кирпичную стену. Как и вы, ваши посетители попадут на страницу с ошибкой 404 и либо попытаются снова (если вам повезет), либо уйдут на другой сайт, на котором есть информация, которую они ищут.
На каждом сайте есть страницы, которые возвращают коды состояния 404. Эти страницы не всегда нужно перенаправлять; Есть и другие варианты. Одним из распространенных заблуждений является то, что оптимальным для SEO является просто перенаправление 301 страниц, которые возвращают код состояния 404 на домашнюю страницу данного домена. На самом деле в большинстве случаев это плохая идея, потому что это может сбить с толку пользователей, которые могут не осознавать, что веб-страница, к которой они пытались получить доступ, не существует.
Если страницы, возвращающие коды 404, являются страницами с высоким авторитетом и большим трафиком или имеют очевидный URL-адрес, на который предназначены посетители или ссылки, вам следует использовать переадресацию 301 на наиболее релевантную из возможных страниц. Например, если ваша страница о кексах без сахара больше не существует, вы можете перенаправить этот URL-адрес с кодом 301 на страницу категории рецептов без сахара.
Вне этих случаев может быть необходимо, чтобы URL-адрес возвращал ошибку 404 — это предотвратит индексацию и повторное сканирование поисковыми системами. Предоставьте своим посетителям наилучшие возможности с пользовательской страницей 404, как это предлагается в этом руководстве Google Search Console. Например, сайты электронной коммерции часто создают страницы 404, когда товары заканчиваются на складе, поэтому эти сайты являются отличными кандидатами для создания пользовательской страницы 404 электронной коммерции.
Код состояния HTTP 410 — Исчез
Номер 410 более постоянен, чем номер 404; это означает, что страница исчезла. Страница больше недоступна с сервера, и адрес переадресации не настроен. Любые ссылки на вашем сайте, которые указывают на страницу 410, отправляют ботов и посетителей на мертвый ресурс, поэтому, если вы их видите, удалите любые ссылки или ссылки на них из своего контента.
Код состояния HTTP 500 — внутренняя ошибка сервера
Этот код состояния указывает не на то, что страницы отсутствуют или не найдены, а на проблему с сервером. 500 — это классическая ошибка сервера, которая повлияет на доступ к вашему сайту. Посетители-люди и боты будут потеряны, а ваш ссылочный вес быстро исчезнет. Поисковые системы предпочитают сайты, которые хорошо поддерживаются, поэтому вам нужно изучить эти коды состояния и исправить их, как только вы столкнетесь с ними.
Код состояния HTTP 503 — Служба недоступна
Другая разновидность 500, ответ 503 означает, что сервер недоступен. Всех (человеков или иных) просят вернуться позже. Это может быть связано с временной перегрузкой сервера или техническим обслуживанием сервера. Код состояния 503 гарантирует, что поисковые системы скоро вернутся, потому что страница или сайт будут недоступны только на короткое время.
Продолжайте учиться
Перенаправление
Канонизация
Руководство для начинающих по SEO
Всегда ли 404 страницы вредны для SEO?
Как обращаться с просроченным содержимым?
Попробуй
MozBar — панель инструментов SEO MozBar позволяет просматривать в браузере соответствующие показатели во время работы в Интернете.
Link Explorer — ваш универсальный инструмент для создания ссылок. Быстро находите возможности для создания ссылок, отслеживайте обнаруженные и потерянные ссылки с течением времени и создавайте списки отслеживания ссылок, чтобы увидеть, когда вы получили ссылку. Мощные данные о ссылках для более эффективного построения ссылок.
Задействуйте свои навыки
Измерьте влияние сайта с помощью Link Explorer
Link Explorer — это инструмент для анализа популярности и обратных ссылок, который позволяет исследовать и сравнивать любой сайт в Интернете.
100 | Продолжить | [RFC9110, раздел 15.2.1] |
101 | Протоколы переключения | [RFC9110, раздел 15. 2.2] |
102 | Обработка | [RFC2518] |
103 | Ранние подсказки | [RFC8297] |
104-199 | Не назначено | |
200 | ОК | [RFC9110, раздел 15.3.1] |
201 | Создан | [RFC9110, раздел 15.3.2] |
202 | Принято | [RFC9110, раздел 15.3.3] |
203 | Неофициальная информация | [RFC9110, раздел 15.3.4] |
204 | Нет содержимого | [RFC9110, раздел 15. 3.5] |
205 | Сбросить содержимое | [RFC9110, раздел 15.3.6] |
206 | Частичное содержимое | [RFC9110, раздел 15.3.7] |
207 | Мультистатус | [RFC4918] |
208 | Уже сообщалось | [RFC5842] |
209-225 | Не назначено | |
226 | IM Используется | [RFC3229] |
227-299 | Не назначено | |
300 | Множественный выбор | [RFC9110, раздел 15. 4.1] |
301 | Перемещено навсегда | [RFC9110, раздел 15.4.2] |
302 | Найдено | [RFC9110, раздел 15.4.3] |
303 | См. Другое | [RFC9110, раздел 15.4.4] |
304 | Не изменено | [RFC9110, раздел 15.4.5] |
305 | Использовать прокси | [RFC9110, раздел 15.4.6] |
306 | (не используется) | [RFC9110, раздел 15.4.7] |
307 | Временное перенаправление | [RFC9110, раздел 15.4.8] |
308 | Постоянное перенаправление | [RFC9110, раздел 15. 4.9] |
309-399 | Не назначено | |
400 | Неверный запрос | [RFC9110, раздел 15.5.1] |
401 | Неавторизованный | [RFC9110, раздел 15.5.2] |
402 | Требуется оплата | [RFC9110, раздел 15.5.3] |
403 | Запрещено | [RFC9110, раздел 15.5.4] |
404 | Не найдено | [RFC9110, раздел 15.5.5] |
405 | Метод не разрешен | [RFC9110, раздел 15.5.6] |
406 | Неприемлемо | [RFC9110, раздел 15. 5.7] |
407 | Требуется аутентификация прокси-сервера | [RFC9110, раздел 15.5.8] |
408 | Время ожидания запроса | [RFC9110, раздел 15.5.9] |
409 | Конфликт | [RFC9110, раздел 15.5.10] |
410 | Ушел | [RFC9110, раздел 15.5.11] |
411 | Требуемая длина | [RFC9110, раздел 15.5.12] |
412 | Предварительное условие не выполнено | [RFC9110, раздел 15.5.13] |
413 | Содержимое слишком большое | [RFC9110, раздел 15. 5.14] |
414 | URI слишком длинный | [RFC9110, раздел 15.5.15] |
415 | Неподдерживаемый тип носителя | [RFC9110, раздел 15.5.16] |
416 | Диапазон не удовлетворяет | [RFC9110, раздел 15.5.17] |
417 | Ожидание не оправдалось | [RFC9110, раздел 15.5.18] |
418 | (не используется) | [RFC9110, раздел 15.5.19] |
419-420 | Не назначено | |
421 | Неверно направленный запрос | [RFC9110, раздел 15. 5.20] |
422 | Необрабатываемый контент | [RFC9110, раздел 15.5.21] |
423 | Заблокировано | [RFC4918] |
424 | Ошибка зависимости | [RFC4918] |
425 | Слишком рано | [RFC8470] |
426 | Требуется обновление | [RFC9110, раздел 15.5.22] |
427 | Не назначено | |
428 | Требуется предварительное условие | [RFC6585] |
429 | Слишком много запросов | [RFC6585] |
430 | Не назначено | |
431 | Поля заголовка запроса слишком велики | [RFC6585] |
432-450 | Не назначено | |
451 | Недоступно по юридическим причинам | [RFC7725] |
452-499 | Не назначено | |
500 | Внутренняя ошибка сервера | [RFC9110, раздел 15. |