#http #browser #protocols #httpverbs
#http #браузер #протоколы #http-глаголы
Вопрос:
В большинстве случаев веб-сайты используют только GET
и POST
для всех операций, однако существует еще семь глаголов. Где они использовались в прежние времена, но не так часто сейчас?
Или, может быть, это потому, что некоторые браузеры не распознают другие глаголы? И если это так, почему производители браузеров предпочитают реализовывать половину протокола?
[Обновить]
Я нашел эту статью, в которой дается хорошее краткое описание ситуации: Почему произошел сбой REST.
Комментарии:
1. Веб-службы RESTful используют многие глаголы, как и многие серверные программы. Однако GET и POST достаточны для многих «традиционных» веб-страниц…
2. На самом деле, существует еще более семи глаголов. Смотрите tools.ietf.org/html/draft-ietf-httpbis-method-registrations-05 .
3. Упомянутая вами статья посвящена REST в браузерах — он все еще жив и здоров для B2B / межсерверного использования.
4. @Mikaveli: В дополнение к этому, это старая статья. Службы REST стали намного более популярными в последние годы.
Ответ №1:
Спецификация HTML является большим недостатком, поскольку на самом деле разрешены только GET, POST и HEAD . Хотя они и используются довольно часто, но не так сильно непосредственно в браузерах.
Другие crud-глаголы, такие как PUT и DELETE, чаще всего используются в службах REST и WebDAV.
В будущем вы увидите больше ОПЦИЙ, поскольку они используются спецификацией CORS (междоменный xmlhttprequest).
ТРАССИРОВКА практически везде отключена, поскольку представляет довольно большой риск для безопасности. CONNECT определенно довольно часто используется прокси-серверами.
ПАТЧ совершенно новый. Хотя мне кажется странным, что они решили добавить его в список (но не PROPFIND, MKCOL, ACL, LOCK и так далее), я думаю, что в будущем мы увидим, что он будет чаще появляться в RESTful services.
Дополнение: Исходный браузер использовал как GET, так и PUT (последний для обновления веб-страниц). Более поздние браузеры в значительной степени стали доступны только для чтения, пока формы и запрос POST не появились в спецификациях.
Комментарии:
1. Как спецификация HTML предотвращает PUT / DELETE / HEAD?
2. В контексте HTML нет упоминания о методах, отличных от GET и POST . Это не препятствует использованию других методов, но также не предоставляет средств для выполнения других запросов. Кроме того, совсем недавно стало известно, что объект XMLHttpRequest может выполнять методы, отличные от GET / POST .
3. Я думаю, он имеет в виду обычные методы HTML-формы. w3.org/TR/html401/interact/forms.html#adef-method
4. Таким образом, хотя это и не предотвращает это, браузеры (или html, или javascript) не предоставили средств для выполнения других запросов. метод =»ПОМЕСТИТЬ» или метод = «УДАЛИТЬ» были бы хороши в html-формах.
5. @Evert: извините, я прочитал «HTTP spec». Каким-то образом мне все же удалось написать «HTML» в своем комментарии. Классическое мышление.
Ответ №2:
Большинство из них все еще используются, хотя и не так широко, как GET или POST . Например, веб-службы RESTful используют PUT amp; DELETE, а также GET amp; POST:
Веб-сервис RESTful — Статья в Вики
HEAD очень полезен для серверной отладки HTTP-заголовков, но поскольку он не возвращает тело ответа, от него мало пользы браузеру / обычному посетителю веб-сайта…
Другие глаголы, такие как TRACE, не так распространены из-за потенциальных проблем с безопасностью и т.д. Кратко упоминается в вики-статье:
Ответ №3:
Десять лет спустя эти другие глаголы очень часто используются в RESTful API, которые поддерживают почти все сегодняшние вездесущие SPA-приложения и многие мобильные приложения.
Тем не менее, интерес к REST как структуре API начинает ослабевать с появлением GraphQL и растущим интересом к функциональным стилям программирования, которые выигрывают от структур API в стиле RPC.