2013-03-22 3 views
0

У нас есть служба быстрого доступа в моей компании, которая в основном обеспечивает перенаправление коротких псевдонимов на полные URL-адреса. На сервере выполняется простое перенаправление HTTP(), которое использует заголовок запроса хоста для поиска с файловым хранилищем на основе файловой системы.Передает ли переадресация 302 метод пересылки метода?

У меня есть веб-Resful Applciation и все GET запросы работают нормально, однако POST/PUT запросы не доходят до сервера.

302 «Перенаправление» по умолчанию сохраняет исходный запрошенный метод или перезаписывается с помощью типов GET?

ответ

1

302 обычно реализуется в соответствии с 303. Для сохранения исходного метода используйте вместо него 307.

Смотрите также 302 раздел HTTP status code definitions:

Примечание: RFC 1945 и RFC 2068 указать, что клиент не может изменить метод на перенаправляется запрос. Тем не менее, большинство существующих реализаций агента пользователя обрабатывают 302, как если бы это был ответ 303 , выполняя GET на поле-значение местоположения независимо от исходного метода запроса. Коды состояния 303 и 307 добавили для серверов, которые хотят однозначно определить, какая из ожиданий ожидается от клиента реакция .

303 указывает, что новое местоположение должно запрашиваться GET. Метод 307 сохраняет исходный метод.

+0

Возможно, вам стоит взглянуть на более недавний

+0

@Julian: он по-прежнему черновик, но в этом проекте 307 указывает * «... и пользовательский агент НЕ ДОЛЖЕН изменять метод запроса ...» *, что точно соответствует потребностям OP (и уже ответил моим ответом). – BalusC

+0

@Balucs: это черновик в Last Call, и это уже 12 лет. Он описывает реальность намного лучше, чем RFC 2616. –

1

Для 302, POST всегда переписывается в GET. Иногда используются другие методы (в зависимости от того, как нарушен браузер, см. http://greenbytes.de/tech/tc/httpredirects/).