Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

Почему в формах в HTML 5.1 разрешены только GET и POST?

#html5 #http


Протокол HTTP 1.1 включает в себя 9 методов: GET, POST, PUT, DELETE и прочие.

При этом HTML 5.1 предполагает использование в формах только двух из них: GET и POST:


  The method and formmethod content attributes are enumerated attributes with the
following keywords and states:
  
  
  The keyword get, mapping to the state GET, indicating the HTTP GET method.
  The keyword post, mapping to the state POST, indicating the HTTP POST method.
  


Почему не поддерживаются или не используются остальные? На чем основано такое архитектурное
решение?

В частности, если логика моего приложения подразумевает идемпотентное удаление элемента,
как и зачем я должен выбирать между по определению неидемпотентным POST и не подходящим
по смыслу GET?

Навеяно обсуждением ответа про XSRF-уязвимости.
    


Ответы

Ответ 1



Тот самый вопрос. Если коротко, когда-то даже предлагалось поддержать эти методы в формах, для того, чтобы браузеры без поддержки скриптового движка могли выполнять такие запросы, высказывались и другие точки зрения "за", по ссылке полное обсуждение. А Mozilla даже добавила их поддержку в beta-версии своего браузера, но дальше дело не пошло. Ну а вот, хоть и скупой, но от принимавших стандарт ответ на ваш вопрос. Тогда и был изменен статус на "WONTFIX". Собственно, всё дело в семантике. PUT as a form method makes no sense, you wouldn't want to PUT a form payload. DELETE only makes sense if there is no payload, so it doesn't make much sense with forms either.

Комментариев нет:

Отправить комментарий