Подтвердить что ты не робот

Запрос GET может быть заблокирован и POST не может. Может ли кто-нибудь объяснить это?

Я изучаю методы HTTP. Я прочитал, что запрос GET можно пометить, а запрос POST не может быть помечен в закладки. Может ли кто-нибудь объяснить это с помощью примера?

Спасибо

4b9b3361

Ответ 1

HTTP POST можно занести в закладки, но поскольку закладка состоит только из URL-адреса, все параметры формы будут потеряны. Это часто означает, что веб-сервер не знает, что делать с запросом, поскольку он ожидал некоторых параметров формы.

Если вы отправляете форму через запрос GET, все параметры формы попадают в URL-адрес (после?), поэтому закладка будет содержать всю информацию, необходимую веб-серверу для повторной настройки страницы во второй раз (кроме для файлов cookie, возможно, но веб-сервер с большей вероятностью справится с этим изящно)

Ответ 2

Невозможно создать закладку POST. Попытка закладки POST просто приведет к операции GET в URL-адресе. Для этого есть очень веская причина. Запросы GET должны быть идемпотентными, то есть повторение одного и того же запроса GET в несколько раз должно приводить к тому же ответу. С другой стороны, запросы POST - нет. Разрешить закладку POSTs может привести к тому, что вы заплатите за что-то дважды, снова переведя деньги из своего банковского счета и т.д.

Ответ 3

Это не значит, что та или иная не может быть помечена закладкой. Более того, нажатие закладки будет всегда запускать запрос GET! Нажав на ссылку простой ваниль, закладку, кнопку навигации браузера, войдя в адресную строку браузера, и т.д. Все вызовет запрос GET. Они никогда не запускают запрос POST. Запрос POST обычно запускается только при отправке HTML <form>, который установлен с помощью method="post". Вы можете отлично программировать программное обеспечение для закладки запроса POST, но это не сделано из-за чувствительных причин.

Однако особенная особенность заключается в том, что запрос GET idempotent. Другими словами, он гарантированно дает тот же результат каждый раз, когда вы его вызываете. Это довольно просто, поскольку все параметры запроса доступны только в URL-адресе запроса. Вы можете использовать его для preprocess данных перед отображением. В мире Java Servlet обычно используется метод doGet() для этого, который предварительно загружает некоторые вещи на основе параметров запроса в конце, пересылает запрос в JSP файл для отображения.

А POST запрос, однако, не идемпотент. Другими словами, гарантированно не давать тот же результат каждый раз, когда вы его вызываете. Все параметры запроса включены в тело запроса. Он не отображается для конечного пользователя, а также не отображается в URL-адресе запроса. Другими словами, вы не можете добавить закладку. Вы можете использовать данные ro postprocess после отправки формы. В мире Java Servlet обычно используется метод doPost() для этого, который собирает параметры запроса и сохраняет его в некоторой базе данных, а в конце пересылает или перенаправляет запрос в JSP файл для результата/подтверждения/отображения.

Ответ 4

В запросе GET вся информация для запроса закодирована в URL-адресе. В запросе POST запрос делается с указанным URL-адресом, но вся информация, связанная с запросом, например, form content, передается в теле запроса.

При закладке URL-адреса вы указываете только URL-адрес, а не тело запроса. Например. если вы заполните форму на веб-странице, которая затем будет передана на веб-сервер в виде запроса POST, а затем закладите страницу ответа в браузере, браузер заметит только URL-адрес, но не тело формы.

Кроме того, при закладке страницы в браузере закладка включает только URL-адрес, но не метод запроса. Браузер всегда использует GET для всех закладок.

Ответ 5

Фактически, что запросы не являются закладками, а URI.

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

Хотя обычно закладки содержат URL-адреса, они также могут содержать код JavaScript (так называемые букмарклеты), и есть хаки для создания закладок, которые будут делать запрос POST вместо GET.
Подробнее см. Как сохранить закладку в Firefox с данными POST?