Перенаправление 302 поддерживает переадресацию методов?
В моей компании есть сервис ярлыков, который в основном обеспечивает перенаправление коротких псевдонимов на полные URL-адреса. Сервер запускает простую службу HTTP redirection (302), которая использует заголовок запроса Host для поиска в хранилище данных на основе файловой системы.
У меня есть Resful Web Applciation, и все запросы GET работают нормально, однако запросы POST/PUT не доходят до сервера.
Сохраняет ли 302 "Redirect" по умолчанию исходный запрошенный метод, или он перезаписывается типами GET?
2 ответа
302 обычно реализуется так, как указано 303. Чтобы сохранить исходный метод, используйте 307 вместо этого.
См. Также раздел 302 определений кода состояния HTTP:
Примечание: RFC 1945 и RFC 2068 указывают, что клиенту не разрешено изменять метод в перенаправленном запросе. Однако большинство существующих реализаций пользовательского агента обрабатывают 302, как если бы это был ответ 303, выполняя GET для значения поля Location независимо от исходного метода запроса. Коды состояния 303 и 307 были добавлены для серверов, которые хотят однозначно прояснить, какой тип реакции ожидается от клиента.
303 указывает, что GET запрашивает новое местоположение. 307 сохраняет оригинальный метод.
Для 302 POST всегда переписывается в GET. Иногда другие методы (в зависимости от того, насколько сломан браузер, см. http://greenbytes.de/tech/tc/httpredirects/).