AJAX POST против GET - PullRequest
       21

AJAX POST против GET

1 голос
/ 26 марта 2020

Мне интересно, имеет ли это какое-то значение, если я использую GET или POST в моих AJAX вызовах.

Я использую AJAX, чтобы удалить элемент с указанным идентификатором. Почему-то POST казался более подходящим выбором. Но с Razor Pages для AJAX POST требуется несколько шагов, чтобы обойти меры по подделке межсайтовых запросов .

Имеет ли какое-то значение, если я просто получу или POST здесь? Или есть какие-то анти-паттерны, которые я бью, если не буду?

1 Ответ

2 голосов
/ 26 марта 2020

Есть много точек зрения, с которых можно ответить на ваш вопрос: «Есть ли какая-то разница, если я просто получу или POST здесь?» Короче говоря, ДА, это имеет значение.

GET и POST оба подвержены атакам CSRF. Используя GET, вы создаете более широкую поверхность атаки. Например, тег IMG в электронном письме может запустить ваш DELETE API для ничего не подозревающего пользователя. Использование POST делает его менее тривиальным. Вам лучше использовать почту без поддержки подделки, чем с помощью GET. В идеале вы используете POST с токенами против подделки.

Другие соображения могут включать:

  • Как кэш обрабатывает этот запрос
  • Соблюдение принципов REST ( при условии, что вы намереваетесь иметь «REST» -фул / подобный дизайн)
  • Обычно предполагается, что get напрямую не манипулирует состоянием на стороне сервера
  • Теоретически URL-адрес определяет местоположение ресурса , если вы удаляете этот ресурс с помощью get, что произойдет в следующий раз, когда вы вызовете get?
  • COR не будет защищен get, поскольку предполагается, что он не изменяет состояние, браузер выполнит GET и просто не вернуть ответ на оскорбительный сайт. С POST браузер будет запускать предварительную проверку CORS с использованием глагола OPTIONS, чтобы убедиться, что запрос разрешен политикой CORS, возвращаемой вашим сервером до того, как ваш сервер получит запрос с глаголом POST.
...