На этот вопрос уже есть ответ:
I ' Мы только недавно начали работать с PHP / AJAX / jQuery, и мне кажется, что важной частью этих технологий являются технологии POST
и GET
.
Во-первых, что такое чем разница между POST
и GET
? Экспериментируя, я знаю, что GET
добавляет возвращаемые переменные и их значения в строку URL
website.com/directory/index.php?name=YourName&bday=YourBday
, но POST
этого не делает.
Итак, это единственное отличие или Существуют ли конкретные правила или соглашения для использования одного или другого?
Во-вторых, я также видел POST
и GET
вне PHP: также в AJAX и jQuery. Чем отличаются POST
и GET
между этими 3? Это та же идея, та же функциональность, просто используется по-другому?
GET
и POST
- это два разных типа HTTP-запросов.
Согласно Википедия :
GET запрашивает представление указанного ресурса. Обратите внимание, что GET не следует использовать для операций, вызывающих побочные эффекты, например, для выполнения действий в веб-приложениях. Одна из причин этого заключается в том, что GET может произвольно использоваться роботами или поисковыми роботами, которым не нужно учитывать побочные эффекты, которые должен вызывать запрос.
и
POST отправляет данные для обработки (например, из HTML-формы) в идентифицированный ресурс. Данные включены в тело запроса. Это может привести к созданию нового ресурса или обновлению существующих ресурсов, либо к тому и другому.
По сути, GET
используется для извлечения удаленных данных, а POST
используется для вставки / обновления удаленных данных.
GET
и POST
, а также о других методах HTTP, если вам интересно.
В дополнение к объяснению предполагаемого использования каждого метода, спецификация также предоставляет по крайней мере одну практическую причину, почему GET
следует использовать только для извлечения данных:
Авторы служб, использующих HTTP протоколу НЕ СЛЕДУЕТ использовать формы на основе GET для отправки конфиденциальных данных, потому что это приведет к тому, что эти данные будут закодированы в Request-URI. Многие существующие серверы, прокси и пользовательские агенты регистрируют URI запроса в каком-то месте, где он может быть виден третьим лицам.Серверы могут вместо этого использовать отправку форм на основе POST
GET
для запросов AJAX является то, что некоторые браузеры, в частности IE, будут кэшировать результаты запроса GET
. Таким образом, если вы, например, проводите опрос с использованием одного и того же запроса GET
, вы всегда будете получать те же результаты, даже если запрашиваемые данные обновляются на стороне сервера. Один из способов решить эту проблему - сделать URL-адрес уникальным для каждого запроса, добавив временную метку. Единственная «большая» разница между POST и GET (при их использовании с AJAX) состоит в том, что поскольку GET является URL-адресом, их длина ограничена (поскольку длина URL-адреса не бесконечна).
С помощью POST вы также можете выполнять многокомпонентное кодирование mime, что означает, что вы также можете прикреплять файлы. Кроме того, если вы используете переменные сообщения при навигации по страницам, пользователь получит предупреждение с вопросом, хотят ли они повторно отправить параметр сообщения. Обычно они выглядят одинаково в HTTP-запросе, но вы должны просто придерживаться POST, если вам нужно «POST» что-то НА сервер и «GET», если вам нужно ПОЛУЧИТЬ что-то С сервера, как они и были задуманы.
POST и GET - это два метода HTTP-запроса. GET обычно предназначен для получения некоторых данных, ожидается, что он будет идемпотентным (повторение запроса не имеет побочных эффектов) и может отправлять на сервер только ограниченное количество данных с параметрами. Запросы GET часто кэшируются по умолчанию некоторыми браузерами, если вы не будете осторожны.
POST предназначен для изменения состояния сервера. Он несет больше данных, и повторение запроса допускается (и часто ожидается) с побочными эффектами, такими как создание двух сообщений вместо одного.
Хотя это не описание различий, ниже есть пара вещей, о которых следует подумать при выборе правильного метода.
POST
, в отличие от GET
, обычно содержит соответствующую информацию в теле запроса. (A GET
не должен иметь тела, поэтому, кроме файлов cookie, единственное место для передачи информации - это URL-адрес.) Помимо сохранения относительной чистоты URL-адреса, POST
также позволяет отправлять гораздо больше информации (поскольку длина URL-адресов ограничена для всех практических целей) и позволяет отправлять практически любые типы данных (например, формы загрузки файлов не могут использовать GET
- они имеют использовать POST
плюс специальный тип / кодировку содержимого).
Кроме того, POST
означает, что запрос что-то изменит, и его не следует переделывать волей-неволей. Вот почему вы иногда видите, как ваш браузер спрашивает вас, хотите ли вы повторно отправить данные формы, когда вы нажимаете кнопку «назад».
GET
, с другой стороны, должен быть идемпотентным - это означает, что вы можете сделать это миллион раз, и сервер будет делать то же самое (и показывать в основном тот же результат) каждый и каждый раз.
Если вы работаете RESTfully , GET следует использовать для запросов, в которых вы только получаете данные, а POST следует использовать для запросов, в которых вы что-то делаете.
Некоторые примеры:
ПОЛУЧИТЬ страницу с конкретным вопросом SO
РАЗМЕСТИТЬ комментарий
Отправьте запрос POST, нажав кнопку «Добавить в корзину».