307 Временная переориентация Код ответа статуса HTTP 307 Temporary Redirect указывает,что запрашиваемый ресурс был временно перемещен на URL,указанный в заголовках Location.
Код ответа статуса перенаправления HTTP 307 Temporary Redirect указывает,что запрашиваемый ресурс был временно перемещен на URL,указанный в заголовках Location.Метод и тело исходного запроса повторно используются для выполнения перенаправленного запроса.
В то время как коды состояния перенаправления, такие как 301 и 308, кэшируются по умолчанию, другие, такие как 302 и 307, нет.
302 часто используется для создания временных перенаправлений,но с появлением HTTP 1.1 307 заменил его в качестве допустимого временного перенаправления.В то время как 302 является немного расплывчатым,307 точно указывает,что запрашиваемый URL был перемещен во временное место и будет возвращен через некоторое время.
Код ответа состояния перенаправления HTTP 307 Temporary Redirect
указывает, что запрошенный ресурс был временно перемещен по URL-адресу, указанному в заголовках
.
Метод и тело исходного запроса повторно используются для выполнения перенаправленного запроса. В случаях, когда вы хотите, чтобы используемый метод был изменен на GET
, используйте вместо этого 303 See Other
. Это полезно, если вы хотите дать ответ методу PUT
, который не является загруженными ресурсами, а является подтверждающим сообщением (например, «Вы успешно загрузили XYZ»).
Единственная разница между 307
и 302
заключается в том, что 307
гарантирует, что метод и тело не будут изменены при выполнении перенаправленного запроса. С 302
некоторые старые клиенты неправильно меняли метод на
: поведение с методами, отличными от GET
и 302
, тогда непредсказуемо в Интернете, тогда как поведение с 307
предсказуемо. Для запросов GET
их поведение идентично.
Status
307 Temporary Redirect
Specifications
Specification |
---|
HTTP-семантика # status. 307 |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
307 | Yes | 12 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
See also
-
302 Found
, эквивалент этого кода состояния, но это может изменить используемый метод, если это неGET
. -
303 See Other
, временное перенаправление, изменяющее метод, используемый дляGET
. -
301 Moved Permanently
навсегда, постоянное перенаправление
HTTP
-
303 См. прочее
Протокол передачи гипертекста (HTTP) 303. См. Код ответа «Другой статус перенаправления» указывает, что ссылка запрашивается не на сам ресурс, а на другую страницу.
304 не изменённый
Код ответа перенаправления клиента HTTP 304 Not Modified указывает на необходимость повторной передачи запрошенных ресурсов.
-
308 Постоянная переориентация
Код ответа статуса 308 Permanent Redirect протокола передачи гипертекста (HTTP)указывает,что запрашиваемый ресурс был окончательно перемещен URL-адрес дан.
-
400 Плохой запрос
Код состояния ответа протокола HyperText Transfer Protocol (HTTP)400 Bad Request указывает,что сервер не может или не будет обрабатывать запрос из-за того,что что-то воспринимается как
- 1
- …
- 365
- 366
- 367
- 369
- …
- 405
- Next
виды, особенности, когда использовать > Q-SEO
Все что нужно знать о кодах ответа 3хх
Все прекрасно знакомы с кодами ответа 301 и 302 — это HTTP коды перенаправления.
Собственно, сначала нужно разобраться в теории — для чего созданы различные типы редиректов и когда они используются.
Напомним, что переадресация URL (редирект) — это функция сервера, которая отправляет клиента и поисковую систему с одного URL-адреса на другой. Чаще всего редиректы автоматические и классифицируются с помощью кодов ответа, определенных в протоколе HTTP.
Какие бывают коды редиректов:
- HTTP 300 — Multiple Choice (Множественный выбор)
- HTTP 301 – Moved Permanently (Навсегда перемещен)
- HTTP 302 – Moved Temporarily, Found (Временно перемещен)
- HTTP 303 – See Other (Просмотр других ресурсов)
- HTTP 304 – Not Modified (Не модифицировано)
- HTTP 305 – Use Proxy (Использовать прокси)
- HTTP 306 – Switch Proxy (Зарезервирован)
- HTTP 307 – Temporary Redirect (Временный редирект)
- HTTP 308 – Permanent Redirect (Перенаправление на постоянной основе)
Забегая наперед: в статье будут использоваться термины GET, POST, HEAD запросы.
HTTP 300 — Multiple Choice (Множественный выбор)
300 код ответа возвращается, когда запрашиваемый ресурс (страница) имеет более одного «пункта назначения» со своим уникальным идентификатором. То есть предоставляется информация об альтернативах, чтобы пользователь (или браузер) мог выбрать предпочтительный конечный ресурс, перенаправив свой запрос на один или несколько из этих идентификаторов.
Обычно разрешается максимум 5 адресов. Браузер может сделать выбор из этого списка автоматически, если он понимает предоставленный тип носителя.
Когда дают право выбрать
Представьте, что это страница «Википедия:Неоднозначность», когда Вики предлагает перечень ссылок, чтобы вы могли найти нужный ответ на свой вопрос.
Когда используют
Используют, чтобы браузер или пользователь имели право выбирать наиболее подходящую страницу для своих потребностей. К примеру, так можно представить опции разных форматов файла, несколько языковых версий. В целом, это довольно редкое явление и имеет мало общего с вашим SEO.
HTTP 301 – Moved Permanently (Навсегда перемещен)
Этот статус указывает на то, что ресурс навсегда изменил URL. То есть для запрашиваемой страницы был установлен новый адрес и последующие обращения к ней должны осуществляться по заданному новому URI.
Со временем поисковая система обновит свой индекс, заменив старый адрес страницы на новый. Браузеры и другие типы клиентов закэшируют новый URL-адрес и будут автоматически следовать редиректу напрямую, не проверяя оригинал для последующих запросов. Сохраненные закладки также обычно обновляются.
301 редирект может быть задан в файле htaccess, index.php или httpd.conf на сервере или в системе управления контентом. Например, есть несколько плагинов WordPress для управления 301 редиректами.
При изменении структуры URL-адресов на сайте очень важно настроить 301 редирект для каждого нового адреса. Невыполнение этого требования приведет к снижению доверия к сайту поисковой системы и пользователей.
Когда используют
Часто используют 301 редирект, чтобы устранить дубли страниц, перенаправить робота и пользователя с неактуальной страницы или имеющей код ответа сервера 404. Редиректы с кодом ответа 301 настраивают, когда меняется структура URL-адреса после обновления дизайна или переезда; при настройке главного зеркала сайта.
Как настроить
Все способы настройки 301 редиректа с примерами смотрите в нашей статье Как настроить 301 редирект
Минутка философии…
301 редирект должен быть постоянным, но насколько постоянным может быть постоянство?
Представитель Google Джон Мюллер как-то дал ответ по поводу длительности 301 редиректа: «… Это может быть год, а в идеале даже больше года, так что мы (Google) действительно могли быть уверены, что все, что указывало на старые URL, указывает на новые URL».
Такая философия нам ясна, продолжаем.
HTTP 302 – Moved Temporarily, Found (Временно перемещен)
Код ответа 302 используется для временных перенаправлений. Поскольку конечный адрес может быть изменен в любой момент, браузер должен продолжать использовать старый URI-адрес и дальше.
По поводу PageRank. Официальная версия Google – любой тип 3xx переадресации (в том числе и 302) не теряет PageRank. Тем не менее, это не значит, что можно не переживать, если у вас настроен 302 редирект для постоянного перенаправления.
Google не заменяет старый URL на новый в своем индексе, но если он поймет, что 302 редирект был настроен по ошибке вместо 301, то переиндексирует URL вам на радость.
Безусловно, для этого нужно некоторое время — если это вообще случится. Вероятность этого такая же, как и того, что Google не будет индексировать закрытые в robots.txt страницы, но это уже совсем другая (печальная) история. Так вот, поисковая система, скорее всего, будет ранжировать такой URL-адрес ниже, чем если бы Вы настроили постоянное перенаправление.
Когда используют
302 редирект не настраивают для адресов, которые изменились навсегда. Такой редирект используют, чтобы исходная страница оставалась в индексе или, если посадочная часто меняется. Чаще всего 302 редирект настраивают когда изменяются URL-адреса во время обслуживания сайта, чтобы контент по-прежнему был доступен по другому URL-адресу.
Также мы слышали, что существует такая практика: настроить 302 редирект для товара, которого нет в наличии. Мы не рекомендуем так делать. Лучше, указать на товаре, что сейчас его нет в наличии и добавить блок с похожими или интересными для пользователя товарами на этой странице:
На что стоит обратить внимание
302 лучше настраивать для временного перенаправления адреса, если будет использоваться GET и HEAD метод передачи запроса, так как работу 302 редиректа с другими запросами (POST, PUT) сложно спрогнозировать.
В случае, если используются запросы отличные от GET/HEAD, рекомендуется настраивать 307 редирект (о нем читайте ниже).
HTTP 303 – See Other (Просмотр других ресурсов)
На практике код ответа 303 похож на 302, но он не обозначает перемещение запрашиваемого адреса.
303 код ответа сервера указывает, что запрашиваемый ресурс можно найти по другому URL. То есть — браузеру только предоставляется адрес. Этот конечный адрес не кэшируется.
Когда используют
303 редирект настраивают в случае, когда на определенный запрос браузера нет подходящего ответа (страницы), но можно предложить более-менее удовлетворительный.
С 303 редиректом раньше отлично были знакомы разработчики, так как после POST отправки формы на сайте необходимо было настроить переадресацию, чтобы избежать повторной отправки формы после возможной перезагрузки страницы пользователем.
На что стоит обратить внимание
Некоторые (устаревшие) клиенты не интерпретируют статус 303. В таких случаях применяется 302 редирект.
HTTP 304 – Not Modified (Не модифицировано)
Браузеры могут отправлять запрос, который спрашивает, был ли ресурс изменен после определенного времени. Для внесения информации о последнем редактировании веб-страницы созданы заголовки Last-Modified и If-Modified-Since.
Браузер отправляет запрос, если ранее он уже загружал страницу и закэшировал ее. Если содержимое страницы было изменено с того времени как то сервер даст ответ со статусом 200 OK. Или, если ресурс не был изменен, сервер отправит статус 304 Not Modified – произойдет переадресация на сохраненную копию страницы.
Когда используется
Когда ответ сервера сигнализирует, что страница не изменялась со времени создания последнего кеша. То есть браузеру нет смысла повторно проверять страницу.
SEO-специалисты используют If-Modified-Since и Last-Modified.
Основная цель использования заголовков If-Modified-Since и Last-Modified состоит в том, чтобы обеспечить эффективное обновление кэшированной информации. Управление кэшем поможет улучшить скорость загрузки страницы, а также улучшить общую производительность веб-сайта и, тем самым, удобство для пользователей.
С точки зрения SEO, контролировать обновление кэша очень важно, потому что так можно улучшить сканирование и индексацию сайта.
Вы же помните, что для каждого сайта есть определенный краулинговый бюджет, и задача оптимизатора состоит в том, чтобы максимально эффективно использовать его.
Проблемы со сканированием, само собой, встречаются на действительно больших сайтах — сканируются страницы, которые вовсе не приоритетные для нас, а до необходимого контента робот может так и не дойти. Например, страница «О нас» может часто сканироваться, потому что на нее стоит ссылка на каждой странице сайта в шапке или в футере. Поэтому робот может считать ее важной, хотя на самом деле это не так.
Настроив If-Modified-Since и Last-Modified, можно показать роботу какие именно страницы есть смысл переобходить, а какие так и остались не измененными.
В целом, ускоряется загрузка страниц для пользователей, снижается нагрузка на сервер, в результатах поиска может отображаться дата последнего обновления содержимого страницы, существенно ускоряется индексация страниц.
HTTP 305 – Use Proxy (Использовать прокси)
Переадресация со статусом 305 происходит, когда запрашиваемый ресурс доступен только через прокси-сервер. При этом адрес прокси указывается в ответе. Ожидается, что веб-браузер повторит запрос через прокси.
Некоторые браузеры (Mozilla, Internet Explorer) обрабатывают этот статус некорректно. Скорее всего, они расценивают небезопасным тот факт, что запрос отправляется серверу не напрямую.
Когда используется
Как было сказано выше, если получить доступ к странице можно только через прокси сервер. Прокси сервер используют для разный целей — начиная от анонимности и заканчивая необходимостью кэшировать содержимое, чтобы ускорить загрузку страницы.
На что стоит обратить внимание
Этот код был проигнорирован многими поисковыми системами и, фактически, заброшен.
HTTP 306 – Switch Proxy (Зарезервирован)
Изначально 306 код ответа сигнализировал, что клиент должен использовать определенный прокси-сервер . Больше он неактуален и просто остается зарезервированным.
HTTP 307 – Temporary Redirect (Временный редирект)
Этот статус был создан, чтобы уточнить 302 редирект.
Код ответа 307 означает, что сейчас запрашиваемый ресурс доступен по другому адресу, но потом все равно вернется на прежний URL. Точно так же, как и с 302, страница не кэшируется, а поисковые системы, вероятнее всего, не будут добавлять в свой индекс новый URL.
Этот код ответа аналогичен 302, за исключением того, что он не позволяет изменить метод запроса с POST на GET.
Когда используют
Настраивают 307 редирект в тех же случаях, что и 302 (смотрите выше). 302 всегда использовался для создания временных перенаправлений, но с появлением HTTP 1.1 код ответа 307 конкретизировал его. Хоть 307 редирект является стандартом HTTP 1.1., он более новый и точный, вовсе необязательно, что этот код ответа широко поддерживается серверами, браузерами или поисковыми системами. До тех пор, пока новый стандарт не станет более распространен, лучше всего указывать 302 редирект.
На что стоит обратить внимание
Чтобы различать две предполагаемые особенности кода ответа 302, создали коды 303 и 307. На практике, ни один из них не используется SEO-специалистами намеренно.
HTTP 308 – Permanent Redirect (Перенаправление на постоянной основе)
Этот код ответа — аналог 301 редиректа с той лишь разницей, что он не позволяет изменить метод запроса с POST на GET. Он точно так же автоматически кэшируется и передает внутренний вес на новую страницу.
Перемещен навсегда
Стоит отметить, что этот код ответа экспериментальный.
Когда используется
Как вы уже догадались, 308 редирект настраивают в тех ситуациях, где мы используем 301 редирект. Также когда необходимо выполнить перенаправление на сайте с большим количеством форм, использующих метод POST. Или, если для повторного запроса требуется метод POST.
Есть и другие случаи использования 308 редиректа. Например, Google Drive перенаправляет с кодом ответа 308, чтобы показать, что была прервана загрузка данных.
Справка
Чтобы понять, какой редирект использовать, нужно немного узнать о том, как работает HTTP. Сейчас придется потерпеть, но потом вы будете великолепны.
HTTP протокол характеризует взаимодействие между двумя компьютерами (клиентом/браузером и сервером) с помощью запросов и ответов. GET, HEAD и POST — это самые распространенные методы запросов, которые помогают браузеру или клиенту «общаться» с сервером.
GET — получение ресурса (страницы). GET-запросы могут кэшироваться. Они остаются в истории браузера, могут быть добавлены в закладки и используются специально для извлечения содержимого страницы (HTML, изображения, JS, CSS).
HEAD — получение информации заголовка. HEAD полностью соответствует GET запросу с разницей, что при запросе HEAD нас не интересует сам ресурс (страница/документ), а только его HEADER и код ответа.
POST — отправка данных на сервер. Конечно, можно отправлять данные на сервер с помощью GET, но использовать POST запросы правильнее. Отправка больших объёмов данных с помощью GET нецелесообразна и имеет ограничения. Запросы POST чаще всего отправляются веб-формами. Вы точно когда-нибудь использовали форму на сайте, которая, когда вы нажимаете кнопку «Назад» или попытки обновить страницу, выдает предупреждение по типу «Все несохраненные данные будут утеряны». Это потому, что это был запрос POST. POST запросы не кэшируются, не сохраняются в истории браузера и не могут быть добавлены в закладки, поскольку они являются набором команд для сервера, а не запросом статического ресурса.
Та-дааааааам, Вы — великолепны.
И, закрывая тему.
Что мы должны использовать?
Работаем мы с такими редиректами: 301, 302, 304, 307, 308. А реально используем 301, 304 и 302. Догадались почему?
Да, потому что 307 и 308 коды ответа сервера еще не полюбились всем браузерам, клиентам и поисковым системам. Поэтому давайте общаться с ними на понятном для них языке.
Комментарии
Комментарии
Что такое код состояния временного перенаправления HTTP 307
Протокол HTTP определяет более 40 кодов состояния сервера, 9 из которых явно предназначены для перенаправления URL-адресов. Каждый код состояния перенаправления начинается с цифры 3 (HTTP 3xx) и имеет собственный метод обработки перенаправлений. Хотя некоторые из них похожи, все они по-разному заботятся о перенаправлениях.
Понимание того, как работает каждый код состояния перенаправления HTTP, имеет решающее значение для диагностики или исправления ошибок конфигурации веб-сайта.
В этом руководстве мы подробно рассмотрим коды состояния HTTP 307 Temporary Redirect и 307 Internal Redirect , включая их значение и отличия от других кодов состояния перенаправления 3xx.
Начнем!
Что такое HTTP 307
Временное перенаправление ?Инженерная рабочая группа Интернета (IETF) определяет временное перенаправление 307 как:
Код состояния 307 (временное перенаправление) указывает, что целевой ресурс временно находится под другим URI, и пользовательский агент НЕ ДОЛЖЕН изменять метод запроса. если он выполняет автоматическое перенаправление на этот URI. Поскольку перенаправление может меняться со временем, клиент должен продолжать использовать исходный эффективный URI запроса для будущих запросов.
Как работает перенаправление HTTP 3xx
Прежде чем мы углубимся в ответы HTTP 307 Temporary Redirect и 307 Internal Redirect, давайте разберемся, как работает перенаправление HTTP.
Коды состояния HTTP — это ответы сервера браузеру. Каждый код состояния представляет собой трехзначное число, и первая цифра определяет тип ответа. Коды состояния HTTP 3xx подразумевают перенаправление. Они дают команду браузеру перенаправить на новый URL-адрес, который определен в Location заголовок ответа сервера.
Перенаправления HTTP 3xx в действииКогда ваш браузер сталкивается с запросом на перенаправление от сервера, он должен понимать природу этого запроса. Эти запросы обрабатываются различными кодами состояния перенаправления HTTP 3xx. Знание их всех поможет нам лучше понять 307 Temporary Redirect и 307 Internal Redirect.
Ознакомьтесь с нашим видеоруководством по временной переадресации 307 и всем переадресациям 3xx
Различные перенаправления HTTP 3xx
Существует несколько типов кодов состояния перенаправления HTTP 3xx. Первоначальная спецификация HTTP не включала временную переадресацию 307 и постоянную переадресацию 308, поскольку эти роли должны были выполняться 301 перемещено навсегда и 302 найдено.
Однако большинство клиентов изменили метод HTTP-запроса с POST на GET для ответов перенаправления 301 и 302, несмотря на то, что спецификация HTTP не разрешает клиентам делать это. Такое поведение потребовало введения более строгого 307 Temporary Redirect 9.0008 и 308 Коды статуса постоянного перенаправления в обновлении HTTP/1.1.
Ответ HTTP 307 Internal Redirect является вариантом кода состояния 307 Temporary Redirect . Он не определен стандартом HTTP и представляет собой просто локальную реализацию браузера. Мы обсудим это позже более подробно.
В то время как коды состояния перенаправления, такие как 301 и 308, кэшируются по умолчанию, другие, такие как 302 и 307, нет. Однако вы можете сделать все ответы перенаправления кэшируемыми (или нет), добавив Cache-Control или Expires Поле заголовка ответа.
HTTP-перенаправления не такие сложныеИспользование 302, 303 или 307 для временных перенаправлений
Как видно из приведенной выше диаграммы, для временных перенаправлений у вас есть три варианта: 302, 303 или 307. Однако большинство клиентов обрабатывают статус 302 код в качестве ответа 303 и измените метод HTTP-запроса на GET. Это не идеально с точки зрения безопасности.
» RFC 1945 и RFC 2068 указывают, что клиенту не разрешено изменять метод перенаправленного запроса. Однако большинство существующих реализаций пользовательских агентов обрабатывают 302, как если бы это был ответ 303, выполняя GET для значения поля Location независимо от исходного метода запроса. Коды состояния 303 и 307 были добавлены для серверов, которые хотят однозначно указать, какая реакция ожидается от клиента. ”
— HTTP/1.1. Определения кодов состояния, W3.org
Таким образом, для временных перенаправлений, когда вам необходимо поддерживать метод HTTP-запроса, используйте более строгий ответ HTTP 307 Temporary Redirect .
перенаправление /register-form.html на signup-form.html или с /login.php на /signin.php.
В случаях, когда вам нужно изменить метод запроса перенаправления на GET, вместо этого используйте ответ 303 See Other .
перенаправление запроса POST со страницы /register.php для загрузки страницы /success.html через запрос GET.
Если ваша целевая аудитория не использует устаревшие клиенты, избегайте использования ответа перенаправления 302 Found .
Понимание HTTP 307 Внутреннее перенаправление для сайтов, поддерживающих только HTTPS
Если у вас есть сайт, поддерживающий только HTTPS (что вам и следует делать), при попытке небезопасного посещения его через обычный http:// ваш браузер автоматически перенаправит на его безопасный https:// версия. Как правило, это происходит с ответом перенаправления 301 Moved Permanently от сервера.
Например, если вы посетите http://citibank.com и загрузите DevTools в Chrome и выберите вкладку Network , вы увидите все запросы, сделанные между браузером и сервером.
Первый ответ — 301 Moved Permanently , который перенаправляет браузер на HTTPS-версию сайта.
Ответ 301 перенаправляет на версию HTTPSЕсли мы углубимся в поля Headers первого запроса, то увидим, что заголовок ответа Location определяет безопасный URL-адрес для перенаправления.
Заголовок ответа Location определяет URL-адрес перенаправленияПроблема с этим подходом заключается в том, что злоумышленники могут перехватить сетевое соединение, чтобы перенаправить браузер на пользовательский URL-адрес. Подобные атаки типа «человек посередине» (MITM) довольно распространены. Популярный сериал даже подделывал его в одном из своих эпизодов.
Кроме того, злоумышленник может запустить атаку MITM без изменения URL-адреса, отображаемого в адресной строке браузера. Например, пользователю может быть предоставлена фишинговая страница, которая выглядит точно так же, как исходный сайт.
А поскольку все выглядит одинаково, включая URL-адрес в адресной строке, большинство пользователей с удовольствием введут свои учетные данные. Вы можете себе представить, почему это может быть плохо.
301 перенаправление на HTTPS небезопасноБезопасное перенаправление с HTTP 307 Внутреннее перенаправление
Теперь давайте попробуем тот же пример с Kinsta. Посещение http://kinsta.com приводит к сетевым запросам, как показано на скриншоте ниже.
Пример 307 Internal RedirectПервый запрос сайта аналогичен предыдущему примеру, но на этот раз он приводит к 307 Внутренний ответ перенаправления . Нажав на нее, вы увидите более подробную информацию об этом ответе.
Разверните свое приложение в Kinsta. Начните прямо сейчас с бесплатной пробной версии.
Запустите свои приложения Node.js, Python, Go, PHP, Ruby, Java и Scala (или почти что угодно, если вы используете свои собственные Dockerfiles) за три простых шага!
Начать бесплатную пробную версию
Примечание: Если вы попытаетесь посетить сайт напрямую с https:// , вы не увидите этот заголовок, так как браузеру не нужно выполнять какое-либо перенаправление.
Обратите внимание на заголовок ответа Non-Authoritative-Reason: HSTS. Это HTTP Strict Transport Security (HSTS), также известный как заголовок ответа Strict-Transport-Security.
Что такое HSTS (строгая транспортная безопасность)?
IETF ратифицировала строгую транспортную безопасность HTTP (HSTS) в 2012 году, чтобы заставить браузеры использовать безопасные соединения, когда сайт работает строго по протоколу HTTPS.
Это похоже на то, как Chrome или Firefox говорят: «Я даже не буду пытаться запрашивать этот сайт или какие-либо его ресурсы по небезопасному протоколу HTTP. Вместо этого я поменяю его на HTTPS и попробую еще раз».
Вы можете следовать руководству Kinsta о том, как включить HSTS, чтобы запустить его на своем веб-сайте WordPress.
Улучшенная безопасность с ответом 307 Internal RedirectУглубление в заголовок ответа второго запроса даст нам лучшее понимание.
Проверка заголовка ответа HSTSЗдесь вы можете увидеть заголовок ответа strict-transport-security: max age=31536000.
Атрибут max-age заголовка ответа strict-transport-security определяет, как долго браузер должен следовать этому шаблону. В приведенном выше примере это значение равно 3153600 секунд (или 1 год).
Как только сайт вернет этот заголовок ответа, браузер даже не будет пытаться сделать обычный HTTP-запрос. Вместо этого он выполнит внутреннее перенаправление 307 на HTTPS и повторит попытку.
Каждый раз, когда этот процесс повторяется, заголовки ответов сбрасываются. Следовательно, браузер не сможет сделать небезопасный запрос в течение неопределенного периода времени.
Если вы размещаете свой сайт на Kinsta, вы можете создать заявку в службу поддержки, чтобы добавить заголовок HSTS на ваш сайт WordPress. Поскольку добавление заголовка HSTS дает преимущества в производительности, рекомендуется включить HSTS для вашего сайта.
Что такое список предварительной загрузки HSTS?
Даже при использовании HSTS существует очевидная проблема с безопасностью. Самый первый HTTP-запрос, который вы отправляете с помощью браузера, небезопасен, что повторяет проблему, которую мы наблюдали ранее с Citibank.
Кроме того, заголовок ответа HSTS может быть отправлен только через HTTPS, поэтому первоначальный небезопасный запрос не может быть даже возвращен.
Для решения этой проблемы HSTS поддерживает атрибут предварительной загрузки в заголовке ответа. Идея состоит в том, чтобы иметь список сайтов, которые принудительно загружают HSTS в сам браузер, полностью обходя эту проблему безопасности.
Добавление вашего сайта в список предварительной загрузки HSTS браузера сообщит ему, что ваш сайт применяет строгую политику HSTS, даже если он посещает ваш сайт впервые. Затем браузер будет использовать ответ 307 Internal Redirect , чтобы перенаправить ваш сайт на безопасную схему https://, прежде чем запрашивать что-либо еще.
Обратите внимание, что в отличие от 307 Temporary Redirect , ответ 307 Internal Redirect является «фальшивым заголовком», установленным самим браузером. Он не исходит от сервера, веб-хостинга (например, Kinsta) или CMS (например, WordPress).
Добавление сайта в список предварительной загрузки HSTS имеет много преимуществ:
- Веб-сервер никогда не видит незащищенные HTTP-запросы. Это снижает нагрузку на сервер и делает сайт более безопасным.
- Браузер берет на себя перенаправление с HTTP на HTTPS, делая сайт более быстрым и безопасным.
Требования к списку предварительной загрузки HSTS
Если вы хотите добавить свой сайт в список предварительной загрузки HSTS браузера, необходимо отметить следующие условия:
- Для вашего домена должен быть установлен действующий сертификат SSL/TLS.
- Обеспечьте строгое соблюдение HTTPS, перенаправив весь HTTP-трафик на HTTPS.
- Все субдомены должны обслуживаться через HTTPS, особенно субдомен www , если существует запись DNS для этого субдомена.
- Ваш базовый домен должен включать заголовок HSTS со следующими атрибутами:
- Атрибут max-age должен быть установлен как минимум на 31536000 секунд (1 год).
- includeSubdomains и директивы preload должны быть указаны.
- Если вы обслуживаете дополнительное перенаправление, оно должно включать заголовок HSTS, а не страницу, на которую оно перенаправляется.
Важно
Удаление вашего домена из списка предварительной загрузки HSTS может быть сложным и трудоемким процессом (до 12 недель и более). Включите HSTS только в том случае, если вы полностью привержены использованию HTTPS на своем сайте. Вы можете удалить свой сайт из списка предварительной загрузки HSTS, отправив форму на hstspreload.org.
Добавление вашего сайта в список предварительной загрузки HSTS
Отправка списка предварительной загрузки HSTSСуществует два способа добавить ваш сайт в список предварительной загрузки HSTS.
- Отправив свой сайт в каталог списка предварительной загрузки HSTS. Например, главный список hstspreload.org поддерживается проектом с открытым исходным кодом Chromium и используется большинством основных браузеров (Firefox, Chrome, Safari, IE 11 и Edge).
- Добавив на свой сайт следующее поле заголовка:
Строгая транспортная безопасность: max-age=63072000; включать поддомены; предварительная загрузка
При использовании второго метода первое посещение вашего сайта браузером не будет полностью безопасным. Однако последующие посещения будут полностью безопасными.
Пример списка предварительной загрузки HSTS от MozillaВы можете использовать бесплатный онлайн-инструмент, такой как Security Headers, чтобы проверить, использует ли ваш сайт HSTS. Если вас беспокоит поддержка браузерами HSTS, вы можете быть уверены, зная, что HSTS поддерживается почти всеми используемыми сегодня браузерами.
HSTS широко поддерживается во всех основных браузерахHTTP 307 Redirects and SEO
Поскольку ответ 307 Temporary Redirect показывает, что ресурс временно переместился на новый URL-адрес, поисковые системы не обновляют свой индекс, чтобы включить этот новый URL-адрес. «Ссылочный сок» из исходного URL-адреса не передается новому URL-адресу.
Это отличается от переадресации 301 Moved Permanently, когда поисковые системы обновляют свой индекс, чтобы включить новый URL-адрес и передать «ссылочный сок» с исходного URL-адреса на новый URL-адрес.
При ответе 307 Internal Redirect все происходит на уровне браузера. Следовательно, это не должно иметь прямого влияния на SEO вашего сайта. Однако добавление вашего сайта в список предварительной загрузки HSTS ускоряет его загрузку и делает его более безопасным, что может помочь ему занять более высокое место в результатах поиска.
Будьте осторожны, чтобы случайно не перенаправить пользователей и ботов в бесконечный цикл перенаправления, что приведет к ошибке «слишком много перенаправлений».
Существует множество типов кодов состояния перенаправления HTTP 3xx. Сегодня пришло время погрузиться в коды состояния временной переадресации HTTP 307… увидимся на другой стороне! 🛤Нажмите, чтобы твитнутьРезюме
Перенаправление URL-адресов позволяет назначить веб-странице более одного URL-адреса. Лучший способ обработки перенаправления URL-адресов — на уровне сервера с ответами кода состояния HTTP 3xx redirect . Если ваш сайт закрыт на техническое обслуживание или недоступен по другим причинам, вы можете временно перенаправить его на другой URL-адрес с ответом 307 Temporary Redirect .
При этом любое перенаправление увеличивает время загрузки страницы. Следовательно, используйте перенаправления разумно, всегда помня об опыте конечного пользователя.
Получите все свои приложения, базы данных и сайты WordPress онлайн и под одной крышей. Наша многофункциональная высокопроизводительная облачная платформа включает в себя:
- Простая настройка и управление на панели управления MyKinsta
- Экспертная поддержка 24/7
- Лучшее оборудование и сеть Google Cloud Platform на базе Kubernetes для максимальной масштабируемости
- Интеграция Cloudflare корпоративного уровня для скорости и безопасности
- Глобальный охват аудитории благодаря 35 центрам обработки данных и 275 точкам присутствия по всему миру
Начните с бесплатной пробной версии нашего хостинга приложений или хостинга базы данных. Ознакомьтесь с нашими планами или поговорите с отделом продаж, чтобы найти наиболее подходящий вариант.
Что это такое и как это исправить Заголовок Location
возвращен в ответе. 307 Код Temporary Redirect
был добавлен в стандарт HTTP в HTTP 1.1, как подробно описано в документе спецификации RFC2616, который устанавливает стандарты для этой версии HTTP. Как указано в RFC, «поскольку перенаправление может иногда изменяться, клиент должен продолжать использовать Request-URI для будущих запросов».Существует десятков возможных кодов состояния HTTP, используемых для представления сложных отношений между клиентом, веб-приложением, веб-сервером и множеством сторонних веб-сервисов, которые могут использоваться, чтобы определить причину конкретный код состояния ответа HTTP может быть трудным. Так как существует так много потенциальных кодов, каждый из которых представляет собой совершенно другое состояние или событие, может быть трудно провести различие между многими из них и определить точную причину таких ошибок, включая код 9. 0291 307 Код ответа Temporary Redirect .
В этой статье мы рассмотрим код 307 Temporary Redirect
, рассмотрев несколько советов по устранению неполадок. Мы также рассмотрим несколько полезных и простых в реализации исправлений распространенных проблем, которые могут вызывать появление кодов 307
в вашем собственном веб-приложении. Давайте приступим к делу!
Проблема на стороне сервера
Учитываются все коды состояния ответа HTTP в категории 3xx
сообщения перенаправления
. Эти коды указывают пользовательскому агенту (то есть вашему веб-браузеру), что для выполнения запроса и доступа к нужному ресурсу требуется дополнительное действие. Категория кодов ответов 3xx
заметно отличается от категории кодов 5xx
, которая охватывает сообщения об ошибках сервера
. Например, ошибка 502 Bad Gateway
, которую мы рассматривали несколько месяцев назад, указывает на то, что сервер, выступающий в роли шлюза, получил неверный ответ от другой , вышестоящий сервер. Таким образом, в то время как код категории 5xx
указывает на реальную проблему, возникшую на сервере, код категории 3xx
, такой как 307 Temporary Redirect
, редко указывает на реальную проблему — он просто возникает из-за поведения или конфигурации сервера, но не свидетельствует об ошибке или ошибке на сервере.
Код 307 Temporary Redirect
может показаться знакомым читателям, прочитавшим нашу статью 302 Found: Что это такое и как это исправить. Как обсуждалось в этом посте, 9Код 0291 302 фактически был введен в стандарт HTTP/1.0, как указано в RFC1945. Вскоре после этого возникла проблема, поскольку многие популярные пользовательские агенты (например, браузеры) фактически игнорировали метод HTTP, который был отправлен вместе с запросом клиента. Например, даже если клиентский запрос был отправлен с использованием HTTP-метода POST
, многие браузеры автоматически отправили бы второй запрос на временный URI
, указанный в заголовке Location
, но сделали бы это, используя метод GET
Метод HTTP. Это часто меняет условия, при которых выдается запрос.
Чтобы решить эту проблему, стандарт HTTP/1.1 решил добавить код ответа 303 See Other
, который мы рассмотрели в этой статье, и код 307 Temporary Redirect
, который мы рассмотрим сегодня. Коды 303
и 307
указывают, что запрошенный ресурс был временно перемещен, но основное различие между ними заключается в том, что 0291 303 См. Другое указывает, что последующий запрос на новый временный URI
должен выполняться с использованием метода HTTP GET
, а код 307
указывает, что последующий запрос должен использовать тот же HTTP . метод исходного запроса (поэтому GET
остается GET
, а POST
остается POST
и т. д.). Это тонкое, но критическое различие в функциональности между ними, поэтому для веб-разработчиков/администраторов важно учитывать оба сценария.
Тем не менее, появление 307 Temporary Redirect
обычно не требует большого вмешательства пользователя. Все современные браузеры автоматически обнаружат код ответа 307 Temporary Redirect
и автоматически обработают действие перенаправления на новый URI
. Сервер, отправляющий код 307
, также будет включать специальный заголовок Location
как часть ответа, который он отправляет клиенту. Этот заголовок Location
указывает на новые URI
, где можно найти запрошенный ресурс. Например, если запрос метода HTTP POST
отправляется клиентом как попытка входа в систему по URL-адресу https://airbrake.io , веб-сервер может быть настроен на перенаправление этого запроса POST
на другой адрес. URI
, например https://airbrake.io/login
. В этом случае сервер может ответить кодом временного перенаправления 307 и указать местоположение
: https://airbrake. io/login 9.0292 заголовок в ответе. Это информирует пользовательский агент (браузер), что данные запроса
POST
(информация для входа) были получены сервером, но ресурс был временно перемещен в заголовок Location
URI
из https://airbrake.io /логин
.
Также важно отличать назначение и варианты использования кода ответа 307 Temporary Redirect
от многих похожих кодов 3xx
, таких как 301 Moved Permanently
мы смотрели в прошлом месяце. В частности, код 307 Found
информирует клиента о том, что переданный Location
URI
является только временным ресурсом и что все будущие запросы должны продолжать обращаться к первоначально запрошенному URI
. С другой стороны, сообщение 301 Moved Permanently
не является временным и указывает, что переданный Location
URI
следует использовать для будущих (идентичных) запросов.
Кроме того, поскольку 307 Временное перенаправление
указывает на то, что что-то пошло не так на сервере
вашего приложения, мы можем в значительной степени игнорировать клиентскую
сторону вещей. Если вы пытаетесь диагностировать проблему со своим собственным приложением, вы можете немедленно игнорировать большую часть клиентского кода и компонентов, таких как HTML, каскадные таблицы стилей (CSS), клиентский JavaScript и т. д. Это не относится к и только к веб-сайтам. Многие приложения для смартфонов с современным пользовательским интерфейсом на самом деле работают на основе обычного веб-приложения; тот, который просто скрыт от пользователя. Если вы используете такое приложение и 307 Возникает временное перенаправление
, проблема не будет связана с приложением, установленным на вашем телефоне или локальном тестовом устройстве. Вместо этого это будет что-то на стороне сервера, которое выполняет большую часть логики и обработки за кулисами, вне поля зрения локального интерфейса, представленного пользователю.
Если ваше приложение генерирует неожиданные коды ответа 307 Temporary Redirect
, существует ряд шагов, которые можно предпринять для диагностики проблемы, поэтому ниже мы рассмотрим несколько возможных обходных путей.
Начните с полной резервной копии приложения
Как и в любом другом деле, лучше перестраховаться в начале, чем что-то напортачить и потом сожалеть об этом. Таким образом, крайне важно выполнить полное резервное копирование вашего приложения, базы данных и т. д., прежде чем пытаться внести какие-либо исправления или изменения в систему. Еще лучше, если у вас есть такая возможность, создайте полную копию приложения на вторичном промежуточном сервере
, который не является «действующим» или иным образом не активен и не доступен для публики. Это даст вам чистую испытательную площадку, на которой вы сможете протестировать все потенциальные исправления для решения проблемы, не угрожая безопасности или неприкосновенности вашего работающего приложения.
Диагностика кода ответа 307 Temporary Redirect
Код ответа 307 Temporary Redirect
указывает, что запрошенный ресурс может быть найден по новому URI
, указанному в заголовке ответа Location
, но только временно. Однако само появление этой ошибки может быть ошибочным, так как вполне возможно, что сервер неправильно настроен, что может привести к неправильному ответу 307 Temporary Redirect 9.0292 вместо стандартного и ожидаемого кода
200 OK
для большинства успешных запросов. Таким образом, большая часть диагностики проблемы будет заключаться в процессе двойной проверки того, какие ресурсы/URL-адреса генерируют коды ответа 307 Temporary Redirect
, и определения того, являются ли эти коды подходящими или нет.
Если ваше приложение отвечает кодами 307 Temporary Redirect
, которые оно не должно выдавать, то это проблема, с которой могут столкнуться и многие другие посетители, резко снижающая способность вашего приложения обслуживать пользователей. Мы рассмотрим некоторые советы и рекомендации по устранению неполадок, которые помогут вам решить эту проблему. Если здесь ничего не работает, не забудьте попробовать поискать ответ в Google. Найдите конкретные термины, связанные с вашей проблемой, такие как название CMS вашего приложения или программное обеспечение веб-сервера, а также 307 Временное перенаправление
. Скорее всего, вы найдете других, кто столкнулся с этой проблемой и (надеюсь) нашел решение.
Устранение неполадок на стороне сервера
Вот несколько дополнительных советов, которые помогут вам устранить причину, по которой 307 Temporary Redirect
появляется на стороне сервера:
Подтвердите конфигурацию вашего сервера
Ваше приложение скорее всего работает на сервере, который использует одно из двух самых популярных программ для веб-серверов, Apache
или nginx
. На момент публикации оба этих веб-сервера составляют более 84%
программного обеспечения веб-серверов в мире! Таким образом, одним из первых шагов, которые вы можете предпринять, чтобы определить, что может вызывать эти коды ответов 307 Temporary Redirect
, является проверка файлов конфигурации программного обеспечения вашего веб-сервера на наличие непреднамеренных инструкций по перенаправлению.
Чтобы определить, какой веб-сервер использует ваше приложение, вам нужно найти файл ключа. Если ваш веб-сервер Apache, ищите .htaccess
в корневом каталоге файловой системы вашего сайта. Например, если ваше приложение находится на общем хосте, у вас, скорее всего, будет имя пользователя, связанное с учетной записью хостинга. В таком случае корневой каталог приложения обычно находится по пути /home/
, поэтому файл .htaccess
будет находиться по адресу /home/
.
Если вы нашли файл .htaccess
, откройте его в текстовом редакторе и найдите строки, в которых используется 9Директивы 0291 RewriteXXX , которые являются частью модуля mod_rewrite
в Apache. Подробное описание того, как работают эти правила, выходит далеко за рамки этой статьи, однако основная концепция заключается в том, что директива RewriteCond
определяет текстовый шаблон, который будет сопоставляться с введенными URL-адресами. Если посетитель сайта запрашивает соответствующий URL-адрес, для фактического перенаправления запроса на соответствующий URL-адрес используется директива RewriteRule
, следующая за одной или несколькими директивами RewriteCond
. 9(.*)$ https://airbrake.io/login$1 [R=307]
Обратите внимание на дополнительный флаг в конце RewriteRule
, в котором явно указано, что код ответа должен быть 307
, что указывает агентам пользователей, что запрос должен быть повторен на указанный URI
, но с сохранением исходного метода HTTP (в данном случае POST
). Таким образом, если вы обнаружите какие-либо странные директивы RewriteCond
или RewriteRule
в файле .htaccess
, которые кажутся ненужными, попробуйте временно закомментировать их (используя префикс символов #
) и перезапустить веб-сервер, чтобы посмотреть, решит ли это проблему.
С другой стороны, если ваш сервер работает на nginx
, вам нужно искать совершенно другой файл конфигурации. По умолчанию этот файл называется nginx.conf
и находится в одном из нескольких общих каталогов: /usr/local/nginx/conf
, /etc/nginx
или /usr/local/etc/nginx
. После обнаружения откройте nginx.conf
в текстовом редакторе и найдите директивы return
или rewrite
, которые используют флаг кода ответа 307
. Например, вот простая директива блока
(то есть именованный набор директив), которая настраивает виртуальный сервер, создавая перенаправление с airbrake.io
на airbrake.io/login
как для POSt
, так и для GET.
запросов метода HTTP:
сервер {
слушать 80;
слушать 443 ssl;
имя_сервера airbrake.io;
if ($request_method = GET) {
return 303 https://airbrake.io/login$request_uri;
}
if ($request_method = POST) {
return 307 https://airbrake.io/login$request_uri;
}
}
Директивы Return
в nginx
аналогичны директивам RewriteCond
и RewriteRule
, найденным в Apache
для поиска по тексту, поскольку они содержат более сложные шаблоны поиска на основе текста. В любом случае, просмотрите свои nginx.conf
для любого ненормального return
или переписать директивы
, которые включают флаг 307
. Закомментируйте любые отклонения перед перезапуском сервера, чтобы увидеть, решена ли проблема.
Просматривайте журналы
Почти каждое веб-приложение хранит в той или иной форме журналы на стороне сервера. Журналы приложений
обычно представляют собой историю того, что делало приложение, например, какие страницы были запрошены, к каким серверам оно подключалось, какие результаты базы данных оно предоставляло и так далее. Журналы сервера
относятся к фактическому оборудованию, на котором запущено приложение, и часто содержат сведения о работоспособности и состоянии всех подключенных служб или даже только самого сервера. Google «журналы [PLATFORM_NAME]», если вы используете CMS, или «журналы [PROGRAMMING_LANGUAGE]» и «журналы [OPERATING_SYSTEM]», если вы используете пользовательское приложение, чтобы получить больше информации о поиске журналов, о которых идет речь.
Отладка кода вашего приложения
Если ничего не помогает, причиной проблемы может быть проблема в каком-то пользовательском коде вашего приложения. Попробуйте диагностировать, откуда может возникнуть проблема, путем ручной отладки вашего приложения, а также анализа журналов приложений и сервера. В идеале сделайте копию всего приложения на локальную машину разработки и выполните пошаговый процесс отладки, который позволит вам воссоздать точный сценарий, в котором 307 Произошло временное перенаправление
и просмотрите код приложения в тот момент, когда что-то пойдет не так.
Независимо от причины, появление 307 Temporary Redirect
в вашем собственном веб-приложении является убедительным признаком того, что вам может понадобиться инструмент управления ошибками, который поможет вам автоматически обнаруживать такие ошибки в будущем. Лучшие из этих инструментов могут даже предупредить вас и вашу команду сразу же при возникновении ошибки.