post vs. put при публикации формы

При оценке того, что форма была отправлена, я проверяю, был ли метод отправлен, а не получен. Мне сказали, что это хороший способ узнать, что форма была отправлена ​​нажатием кнопки отправки, а не просто отправлена ​​сценарием, который передает данные в URL-адресе.

Как насчет метода «положить». Очень похоже на "пост". Можно ли его более или менее использовать вместо «пост» без особого ущерба для преимуществ, предоставляемых «постом»?


person samuel    schedule 07.11.2010    source источник
comment
возможный дубликат Являются ли PUT, DELETE , HEAD и т. д. доступны в большинстве веб-браузеров?   -  person Pekka    schedule 07.11.2010
comment
Errmm... следующее НЕ верно: мне сказали, что это хороший способ узнать, что форма была отправлена, нажав кнопку отправки, и что она не просто отправлена ​​сценарием, который передает данные в URL. См. CSRF в Википедии: использование указанного HTTP использования для GET и POST, в котором запросы GET никогда не имеют постоянного эффекта, является хорошей практикой, но недостаточно для предотвращения CSRF. Злоумышленники могут написать JavaScript или ActionScript, который незаметно отправляет форму POST в целевой домен.   -  person thejh    schedule 07.11.2010
comment
@Pekka, меня сейчас не очень волнует совместимость браузера. После этого меня больше волнует сцена. Например, если он поддерживается и браузер может его обнаружить, что происходит после этого в самом веб-приложении с точки зрения безопасности. Пут слабее поста или они более-менее одинаковые?   -  person samuel    schedule 07.11.2010
comment
@thejh, хорошо, ты меня понял. Предположим, что форма имеет токен csrf и защищена таким образом, вы бы тогда использовали get? Думаю, нет. Вы бы все равно использовали пост. Не знаю почему, но все согласны с тем, что формы должны отправляться почтовым методом, а не получаться.   -  person samuel    schedule 07.11.2010
comment
@samuel: Да, потому что POST предназначен для отправки данных, а GET — для выборки, и потому что POST может отправлять больше данных.   -  person thejh    schedule 07.11.2010
comment
@samuel, какая разница во всем этом, если вы вообще не можете использовать put в браузере? Я что-то неправильно понимаю?   -  person Pekka    schedule 07.11.2010
comment
@samuel: PUT — это старый метод загрузки файлов.   -  person thejh    schedule 07.11.2010
comment
PUT — это старый метод загрузки файлов в том же смысле, что GET — старый метод получения данных. Это стандартный способ замены ресурса в HTTP.   -  person Quentin    schedule 07.11.2010


Ответы (3)


No.

HTML поддерживает только post и get в качестве методов формы, даже хотя у HTTP есть и другие.

Даже вне контекста HTML-формы ответ по-прежнему отрицательный, поскольку PUT и POST очень разные. POST — это общий метод «Вот какие-то данные, сделайте с ними что-нибудь», а PUT означает «Замените ресурс в этом URI этими данными».

person Quentin    schedule 07.11.2010

Если вы делаете это из соображений безопасности, GET или POST не имеет значения. Прочитайте статью Википедии о предотвращении XSRF: http://en.wikipedia.org/wiki/Cross-site_request_forgery#Prevention

person thejh    schedule 07.11.2010
comment
На самом деле отчасти из соображений безопасности, но я хочу знать разницу между post и put (а не get и post). Я хочу проверить, являются ли post и put более или менее одинаковыми. Я написал вам ответ на ваш первоначальный комментарий. - person samuel; 07.11.2010

нет разницы между put и post в безопасности... но put не поддерживается в некоторых службах

person Mohammad Efazati    schedule 07.11.2010