Безопасно ли использовать HTTP-статус 308 Permanent Redirect?

11

Безопасно ли использовать HTTP-код состояния 308 Permanent Redirect ( предложение ) в ответах сервера? Проблема с 301 Moved Permanently заключается в том, что он работает только с GET-запросами (если быть честным: POST преобразуется в GET, что НЕ является опцией).

Код статуса очень новый во «времени RFC», так что бы вы предложили?

Что бы сделал браузер, если бы не знал 308? Будет ли он найти место и сделать 302?

burnersk
источник
Даже новее, чем вы думаете; сейчас RFC .
Майкл Хэмптон
1
Вы читали раздел « Вопросы развертывания »?
Хокан Линдквист
308 - это не стандарт - это предложение, все еще на экспериментальной стадии. Браузеры должны прибегнуть к 300 интерпретации любой ошибки 301-399, которую они не понимают.
Крис С
1
При каком сценарии вы ожидаете получить запрос POST, отправленный непосредственно на устаревший URL?
Скайхок
1
@Skyhawk: я работаю с автономными функциями «html5». Для комментариев или создания новых сообщений целевой URL может быть изменен из-за изменения самого сообщения в его категориях.
Burnersk

Ответы:

4

Хотя 308 теперь является стандартом ( https://tools.ietf.org/html/rfc7538 ), в настоящее время он не является безопасным [Изменить] (по состоянию на 3 апреля 2019 года), особенно для настольных приложений, но в некоторых случаях он может быть почти безопасным. конкретные регионы (например, Индия) или для приложений, предназначенных для планшетов и мобильных устройств.

Отсутствие безопасности связано с тем, что IE 11 в Windows 7 и 8.1 не поддерживает его. В IE 11 сайт просто зависает. К счастью, IE, который поставляется с Windows 10, поддерживает его, так что это будет всего лишь случай ожидания, пока общий многолюдный переход от Windows 7 (Win 7 только превзошел Win 10 в глобальной статистике использования, Win 8 значительно менее популярны, чем оба) [Изменить] или ваша компания принимает решение больше не поддерживать его (что можно привести в качестве веского аргумента для 14 января 2020 года, когда Windows 7 теряет даже долгосрочную поддержку ).

Все остальные современные браузеры поддерживают его (Chrome, Firefox, Safari, Edge, Opera).

[Изменить] Статистика использования за март 2019 года, чтобы помочь принять ваше решение:

  • 36,52% пользователей настольных компьютеров все еще используют Windows 7
  • 9,83% пользователей настольных компьютеров были в IE; так как Win10 настолько сильно подтолкнул Edge, я бы предположил, что большинство из этих пользователей были на Win 7. Ссылка netmarketshare

Таким образом, решение об использовании 308 могло бы повлиять (вероятно, на мои предположения, основанные на приведенной выше статистике) от 5 до 9% пользователей настольных компьютеров на момент этого редактирования (3/4/2019). Если ваше приложение больше ориентировано на планшеты / мобильные устройства, это значение будет значительно ниже. Точно так же, если ваше приложение специально для индийского рынка.

Вы можете проверить, поддерживает ли ваш браузер 308 перенаправлений здесь: https://webdbg.com/test/308/

Монти
источник
Обратите внимание, что это отличается от 307. IE 11 в Windows 7 поддерживает HTTP 307 без проблем. (Почему?)
Франклин Ю
7

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308

Предложение RFC 7538 сегодня получило широкую поддержку. Это безопасно.

308 вместо 301. 307 вместо 302.

переместить! = перенаправление

Перемещение напоминает определенный адрес и / или перемещенный файл. Перенаправление - это новое местоположение или адрес.

perroud
источник
1
На данный момент (20 февраля 2018 г.) это еще не безопасно из-за большого количества людей в Windows 7, использующих IE 11, который все еще не поддерживает это.
Монти
@monty, что это был за номер? что теперь?
Робин Уинслоу
По состоянию на март 2019 года 36,52% пользователей настольных компьютеров все еще работают в Windows 7, а 9,83% пользователей настольных компьютеров - в IE.
Монти
2

Чтобы закончить это: Нет, это не безопасно использовать этот код состояния. Смотрите комментарии для деталей.

308 - это не стандарт - это предложение, все еще на экспериментальной стадии. Браузеры должны прибегнуть к 300 интерпретации любой ошибки 301-399, которую они не понимают.

Некоторые браузеры просто отказывают в этом коде состояния.

burnersk
источник
1
Этот ответ устарел. Я считаю, что RFC был и принят для использования в современных браузерах developer.mozilla.org/en-US/docs/Web/HTTP/Status/308 . Однако, если вам требуется поддержка старых браузеров, это все равно может быть проблемой!
Яхья Уддин
3
Он не работает в IE11 на Win8.1 и ниже (он работает на Win10).
Барт Verkoeijen
tools.ietf.org/html/rfc7538 «Код состояния протокола передачи гипертекста 308 (постоянное перенаправление)», опубликованный в апреле 2015 года.
Патрик Мевзек,