Можно ли установить cookie с помощью запроса HTTP GET? - PullRequest
7 голосов
/ 08 декабря 2011

Это может быть немного этическим вопросом, но у меня довольно много дискуссий в офисе по поводу следующей проблемы:

Можно ли устанавливать cookie с помощью HTTP-запроса GET?Поскольку всякий раз, когда HTTP-запрос меняет что-то в приложении, вы должны использовать запрос POST.HTTP GET должен использоваться только для извлечения данных, идентифицированных Request-URI.

В этом случае приложение не изменяется, но, поскольку cookie изменяется, пользователь может получить другой опыт, когда страницазагружается снова, это означает, что HTTP-запрос GET изменил поведение приложения (хотя ничего не изменилось на стороне сервера).

Получить ссылку на запрос

Обсуждение началось, потому что мы хотимиспользуйте обычный элемент привязки, чтобы установить cookie.

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Пользователь всегда может иметь другой опыт , когда он отправляет другой запрос GET - вы не ожидаете, что всегда будете возвращать один и тот же набор данных для (воображаемой) службы времени: "GET / time / current".

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

Рассмотрим раздел 9.1.1 Безопасные методы

Естественно, невозможно гарантировать, что сервер не генерирует побочные эффекты какрезультат выполнения запроса GET;на самом деле, некоторые динамические ресурсы считают, что это особенность.Важным отличием здесь является то, что пользователь не запрашивал побочные эффекты, поэтому не может нести за них ответственность.

Также я бы сказал, что вполне приемлемо изменить или установить cookie в ответдля запроса GET, потому что вы просто возвращаете некоторые данные .

2 голосов
/ 08 декабря 2011

Проблема с GET, особенно если они находятся на теге, заключается в том, что они похожи на Google.

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

Я бы также сказал, что правило GET на самом деле не в изменении приложения, а скорее в изменении данных.Я ценю тонкое различие с cookie (то есть вы не меняете данные в ВАШЕЙ системе), но в целом это хорошее правило, и независимо от того, где хранятся данные, GET не следует использовать для его изменения.

...