2012-01-08 1 views
0

Если кто-то обращается к моему серверу через http (то есть не https), я перенаправляю запросы GET на версию https.Какой код ответа для возврата небезопасного POST неприемлем?

Но я не знаю, что делать с POST и PUT, потому что я не могу перенаправить их (браузер делает GET при перенаправлении, я считаю).

Я должен вернуть код ошибки. Какой код ошибки HTTP я должен вернуть?

ответ

-1

http://www.ietf.org/id/draft-ietf-httpbis-p2-semantics-18.txt объясняет коды ответа HTTP. Если вам нужен код ошибки, просто верните 404, если запросы не могут быть обработаны по этому URL-адресу.

7.4.5. 404 Не найдено

Сервер не нашел ничего подходящего URI запроса. Не указывается, является ли условие временным или постоянным. Код состояния 410 (Gone) СЛЕДУЕТ использоваться, если сервер через некоторый механизм внутренней конфигурации знает, что старый ресурс постоянно недоступен и не имеет адреса пересылки. Этот код состояния обычно используется, когда сервер не желает точно определить, почему запрос был отклонен, или когда не применяется другой ответ .

+0

спасибо за ваш ответ. я не уверен, 403, как описано в ответе сразу после вашего, лучше, чем 404 или нет. – necromancer

+0

одним детерминантом является то, будет ли в противном случае URL-адрес действительным (то есть, если отправлено по https). если я уверен, что это было бы действительно, я думаю, что 403 было бы предпочтительнее. если это фильтр, который без разбора фильтрует все небезопасные сообщения, тогда он не будет знать, является ли он действительным URL-адресом или нет, и поэтому 404 может быть лучше. – necromancer

+0

@agksmehx, 403 для запросов, которые могут быть действительными, если они включают разные учетные данные. Это не так в вашей ситуации. –

1

Обычно вы должны вернуть 403 - Запрещено. Общее описание этого: «Сервер понял запрос, но отказывается его авторизовать». который соответствовал бы вашей ситуации.

+0

спасибо, я склонен думать, что 403 лучше, чем 404 но я не уверен. я буду принимать ваш ответ после того, как я немного уверен. – necromancer

+0

одним детерминантом является то, будет ли URL-адрес в противном случае действительным (то есть, если отправлено через https). если я уверен, что это было бы действительно, я думаю, что 403 было бы предпочтительнее. если это фильтр, который без разбора фильтрует все небезопасные сообщения, тогда он не будет знать, является ли он действительным URL-адресом или нет, и поэтому 404 может быть лучше. – necromancer

+0

403 все еще лучший выбор. -> Для этой ситуации есть код ошибки подстановки для HTTP 403. 403.4 - это «SSL Required», который является именно вашей ситуацией. Я не думаю, что для этого есть определенный RFC, но оба Apache и Microsoft IIS определяют это, так что это по крайней мере стандарт defacto. Ссылка: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/21079107-1740-470e-a933-23a45494b8ba.mspx?mfr=true – jeffsix