Некоторые из моих приложений ajax в прошлом использовали запрос GET, но теперь я начинаю использовать вместо него запрос POST. Запросы POST кажутся немного более безопасными и определенно более удобными / красивыми. Таким образом, мне интересно, есть ли вообще причина, по которой я должен использовать запрос GET.





Это может помочь вам решить, где использовать GET и где использовать POST:
Возможно, самое главное, GET можно отмечать закладками / просматривать в истории URL-адресов и искать в Google.
POST важен в тех случаях, когда вы не хочу добавляете событие в закладки или не можете вводить его как URL-адрес - в противном случае вы (или Google, сканирующий ваши URL-адреса) можете случайно выполнить такие действия, как, например, удаление пользователей из вашей системы.
Неправда, если вы не хотите игнорировать кнопки назад / вперед в своих приложениях AJAX. В противном случае вам необходимо использовать хеши в своих URL-адресах, что напрямую связано с URL-адресом GET и закладками.
Вы должны использовать GET там, где вы выполняете запрос, который не имеет побочных эффектов, например. просто получаю некоторую информацию. Этот запрос может:
Все это хорошо. Все, что только извлекает данные (особенно общедоступные), действительно должно быть GET. Сервер должен отправлять разумные заголовки Last-Modified: и Expires:, чтобы при необходимости разрешить кеширование.
Я обычно задаю вопрос следующим образом: Изменилось ли что-нибудь важное после запроса? (несмотря на ведение журнала и т.п.). Если это так, это должен быть запрос POST, если нет, это должен быть запрос GET.
Я рад, что вы называете POST-запросы «немного» более безопасными, потому что это в значительной степени то, что они собой представляют; Подделать POST-запрос пользователя на страницу - тривиально. Однако выполнение этого запроса POST предотвращает случайный повторный запуск действия веб-ускорителями или перезагрузками.
Что касается AJAX, есть еще одно соображение: если вы возвращаете JSON с поддержкой обратного вызова, будьте очень осторожны, чтобы не помещать туда какие-либо конфиденциальные данные, которые вы не хотите, чтобы другие веб-сайты могли видеть там. В Википедии была уязвимость в этом направлении, когда пользовательский токен анти-CSRF был обнаружен через их JSON API.
К сожалению, это не отвечает на вопрос. «What are the advantages of using a GET request over a POST request?» «Thus, i'm wondering if there is any reason why I should use GET request at all.»
Запросы POST так же небезопасны, как и GET. Основное отличие состоит в том, что POST используется для изменения состояния серверного приложения, а GET только запрашивает данные от него.
Разница имеет значение, когда вы используете чистые, «спокойные» URL-адреса, где сам URL-адрес указывает ресурс, а различные методы запускают разные действия на стороне сервера.
> Запросы POST так же небезопасны, как и GET. Не совсем так, но я понимаю вашу точку зрения. Данные GET-запросов часто записываются в файлы журнала запросов небезопасного доступа, тогда как POST-запросы обычно этого не делают.
POST и GET по своей сути небезопасны или небезопасны. Использование того или другого не имеет абсолютно никакого отношения к безопасности.
Есть еще одно отличие, о котором никто не упоминает.
Запросы GET передаются в строке URL-адреса и поэтому имеют ограничение по длине, обычно зависящее от браузера. Кажется, что большинство из них около 2000 символов.
Запросы POST могут быть намного больше - на самом деле не ограничены. Поэтому, если вам нужно запросить данные с веб-сервера и вы передаете много информации о параметрах, то запрос POST может быть единственным вариантом.
Итак, как упоминалось ранее, на самом деле запрос GET предназначен для запроса данных (без побочных эффектов), в то время как запрос POST обычно используется для передачи данных обратно на сервер для хранения (с побочными эффектами). например Используйте POST для загрузки файла. GET, чтобы получить файл.
Было время, когда IE, как мне кажется, имел очень короткую строку GET URL. Некоторые приложения, такие как Lotus Notes, используют большое количество случайных символов для представления идентификаторов документов. У меня было неудовольствие использовать другой продукт, который генерировал случайные строки, поэтому URL-адрес страницы каждый раз был уникальным. Случайная строка была ОГРОМНОЙ ... и она не всегда работала с IE6 по памяти.
Однако все хорошие моменты в ответ на вопрос, запросы GET более полезны в определенных сценариях по сравнению с запросами POST:
Ради потомков, обновление этого комментария примечаниями к блогу re: point # 3 здесь, вся заслуга Омара А.Л. Забира (автора упомянутого Сообщение блога):
"Atlas by default makes HTTP POST for all AJAX calls. Http POST is more expensive than Http GET. It transmits more bytes over the wire, thus taking precious network time and it also makes ASP.NET do extra processing on the server end. So, you should use Http Get as much as possible. However, Http Get does not allow you to pass objects as parameters. You can pass numeric, string and date only. When you make a Http Get call, Atlas builds an encoded url and makes a hit to that url. So, you must not pass too much content which makes the url become larger than 2048 chars. As far as I know, that’s what is the max length of any url.
Another evil thing about http post is, it’s actually 2 calls. First browser sends the http post headers and server replies with “HTTP 100 Continue”. When browser receives this, it sends the actual body."
«Они быстрее» только потому, что их можно кешировать?
Нет, также из-за того, как они работают; они совершенно разные в том, что и как отправляют данные. См. omaralzabir.com/…
Это единственный ответ, который отвечает на вопрос OP. Другие говорят о разнице.
Закладки на самом деле не имеют отношения к AJAX, как просил Опрашивающий.