Мне сказали никогда не писать операции с запросом GET. и что поисковые системы и другие боты последуют и активируют их. Предполагая, что для всех операций записи требуется логин, возникла бы проблема с получением запроса в виде ссылки?Должен ли я не писать действия через GET?
ответ
Письмо с GET нарушает REST. Есть более фундаментальные и философские причины для этого, чем просто потому, что бот будет следовать за ними. Это не значит, что это запрещено.
Причина, по которой GET не должна приводить к операции записи, заключается в том, что в службе RESTful существует неявное соглашение о том, что GET являются «безопасными» и не будут приводить к чему-либо удаленному действию. GET предназначен для получения информации. Если вы хотите отправить информацию, используйте POST.
Не только боты, но и обычные браузеры ведут себя по-разному для запроса GET. Когда вы используете кнопку «назад» на странице, использующей POST, большинство браузеров выдает предупреждение о том, что повторная отправка запроса будет выполнять (предположительно) операцию записи еще раз. В GET нет такой вещи, потому что предполагается, что GET ничего не меняет.
Логин не защитит пользователя от опасности предварительной выборки ссылок, сделанной их браузером, надстройками браузера (включая предварительные просмотры ссылок), «веб-ускорителем» или даже прокси-сервером.
d'oh. Что с GET с ajax? к счастью, я принял совет и поменял их на пост, но мне было бы интересно узнать, знаете ли вы, будут ли веб-ускорители захватывать данные с помощью ajax get – 2010-04-30 23:26:49
@ acidzombie24 Я никогда не слышал об этом, и представлял бы его менее вероятным, но любой запрос GET с изменением данных может вас укусить, AJAX или нет. Если браузер делает запрос, который попадает в кеш, этот кеш может быть, например, «обновлен» как средство повышения производительности. Я не говорю, что это возможно. Просто, что нет необходимости беспокоиться обо всех этих сумасшедших сценариях с помощью POST - вот почему он есть. –
+1 для обозначения как хороших причин следовать закону, так и того, что закон не является абсолютным. –
hmm. У меня есть действие с именем watch user, которое ссылается на '/ watch_user? Action = & id = & tok = ' Это было бы плохо? его отменить. –
2010-03-02 13:44:39
Можете ли вы не использовать POST здесь? – Skilldrick