2010-03-02 3 views
0

Мне сказали никогда не писать операции с запросом GET. и что поисковые системы и другие боты последуют и активируют их. Предполагая, что для всех операций записи требуется логин, возникла бы проблема с получением запроса в виде ссылки?Должен ли я не писать действия через GET?

ответ

5

Письмо с GET нарушает REST. Есть более фундаментальные и философские причины для этого, чем просто потому, что бот будет следовать за ними. Это не значит, что это запрещено.

Причина, по которой GET не должна приводить к операции записи, заключается в том, что в службе RESTful существует неявное соглашение о том, что GET являются «безопасными» и не будут приводить к чему-либо удаленному действию. GET предназначен для получения информации. Если вы хотите отправить информацию, используйте POST.

+0

+1 для обозначения как хороших причин следовать закону, так и того, что закон не является абсолютным. –

+0

hmm. У меня есть действие с именем watch user, которое ссылается на '/ watch_user? Action = & id = & tok = ' Это было бы плохо? его отменить. – 2010-03-02 13:44:39

+0

Можете ли вы не использовать POST здесь? – Skilldrick

1

Не только боты, но и обычные браузеры ведут себя по-разному для запроса GET. Когда вы используете кнопку «назад» на странице, использующей POST, большинство браузеров выдает предупреждение о том, что повторная отправка запроса будет выполнять (предположительно) операцию записи еще раз. В GET нет такой вещи, потому что предполагается, что GET ничего не меняет.

1

Логин не защитит пользователя от опасности предварительной выборки ссылок, сделанной их браузером, надстройками браузера (включая предварительные просмотры ссылок), «веб-ускорителем» или даже прокси-сервером.

+0

d'oh. Что с GET с ajax? к счастью, я принял совет и поменял их на пост, но мне было бы интересно узнать, знаете ли вы, будут ли веб-ускорители захватывать данные с помощью ajax get – 2010-04-30 23:26:49

+0

@ acidzombie24 Я никогда не слышал об этом, и представлял бы его менее вероятным, но любой запрос GET с изменением данных может вас укусить, AJAX или нет. Если браузер делает запрос, который попадает в кеш, этот кеш может быть, например, «обновлен» как средство повышения производительности. Я не говорю, что это возможно. Просто, что нет необходимости беспокоиться обо всех этих сумасшедших сценариях с помощью POST - вот почему он есть. –