Рекомендации по HTTP GET и POST

Это плохая практика, чтобы выдать следующий запрос POST:

/test?a=1&b=2
POST data: c=3&d=4

Обратите внимание, что 2 параметра являются частью URL, а 2 параметра - частью содержимого POST.

С другой стороны, все еще рекомендуется следующее правило:

Запрос GET: получить контент с сервера, но ничего не менять на сервере.POST-запрос: публикация контента на сервере, который может изменять данные на сервере

Я спрашиваю, потому что я вижу все в Интернете.

Лоран Люс

 mpen03 янв. 2010 г., 01:54
Да, люди все еще считают, что вы должны использоватьPOSTs для всего, что может изменить данные, ноI до сих пор думаю, что это груз дерьма. Это заставляет вас делать по-настоящему хакерские вещи, когда все, что вам нужно, это простая ссылка Удалить. Я думаю, что до тех пор, пока у вас есть какие-то надлежащие проверки на стороне сервера, чтобы веб-сканеры не испортили ваш сайт и все такое, это не имеет большого значения.
 mpen03 янв. 2010 г., 01:56
Кроме того, смешивать методы параметров хорошо, но я не знаю, почему вы это сделаете. С точки зрения программирования, имеет смысл быть последовательным. Единственное исключение, о котором я могу подумать, это для форм входа в систему, иногда вы хотите перенаправить на страницу входа в систему, а затем вы добавляете ссылку redirect_back_to_this_page в GET, и нет большого смысла копировать это обратно в форму.

Ответы на вопрос(4)

Учитывая этот факт, часто есть очень веская причина для помещения некоторых параметров в GET, а некоторые в POST-переменные - рассмотрим случай, когда у вас есть веб-скрипт, который выполняет что-то вроде:

UPDATE datatable SET quantity=30 WHERE order=21559

Это может быть представлено как:

 /update?order=21559
 POST data: quantity=30

C.

Это отражается на обновленном поведении современных браузеров. Они с радостью обновятся значениями GET, но при обновлении POST появится диалоговое окно с предупреждением («Вы уверены, что хотите отправить повторно?» И т. Д.).

Похоже, что вы пытались объединить два метода (GET и POST) .. путем POSTing к URL-адресу со значениями GET. Хотя это должно работать нормально, это обычно не делается. Формы обычно используют исключительно один или другой.

Решение Вопроса

ваши предположения верны. Вы должны быть последовательны в том, как вы передаете свои параметры или требуете, чтобы параметры были переданы, но это не принесет никакого вреда на самом деле.

Предполагается, что операции GET являются безопасными операциями, которые не вызывают никаких побочных эффектов (кроме кэширования и т. Д.), Поэтому они легко кэшируются прокси-серверами и т.п. Операции POST, с другой стороны, могут вызывать побочные эффекты.

Я бы порекомендовал прочитатьЗапись в Википедии по протоколу HTTP:

ПОЛУЧИТЬ

Запрашивает представление указанного ресурса. Обратите внимание, что GET не следует использовать для операций, вызывающих побочные эффекты, таких как использование его для выполнения действий в веб-приложениях. Одна из причин этого заключается в том, что GET может произвольно использоваться роботами или сканерами, что не должно учитывать побочные эффекты, которые должен вызывать запрос. Смотрите безопасные методы ниже.

ПОЧТА

Отправляет данные для обработки (например, из формы HTML) на указанный ресурс. нные включены в тело запроса. Это может привести к созданию нового ресурса или обновлению существующих ресурсов или обоим.

Есть и другие операции (например, HEAD, PUT, DELETE), и вы должны рассмотреть их использование, если вы разрабатываете API. Они широко обсуждаются в RESTful API.

по которой изменяющиеся данные должны быть отправлены в POST, заключается в том, что вы больше не будете изменять данные, если пользователь нажал кнопку «Обновить». В этом случае будет отправлена только информация GET.

 notnoop03 янв. 2010 г., 01:46
Если человек нажмет на обновление, а последняя операция была POST (как в этом запросе), он все равно, скорее всего, вернет после операции. Если сервер не выполняет перенаправление на операцию GET.
 Itay Moav -Malimovka03 янв. 2010 г., 01:49
он, вероятно, имел в виду закладки / индексированные поисковыми системами. Вы действительно не хотите, чтобы запросы на изменение данных были проиндексированы ...

Ваш ответ на вопрос