GET або POST, Абетка W€B
Секрет твого успіху
Обидва HTTP методи GET і POST використовуються для передачі параметрів у програму на PHP. Подивимося, як виглядають запити користувача браузера до сервера, де виконується наша програма.
Правило 1. Якщо передаються конфіденційні дані (паролі, номери кредиток тощо), потрібно використовувати метод POST
Тільки не треба впадати в крайнощі та вішати ярлики. Метод GET зовсім не поганий, і сказане вище зовсім не означає, що завжди потрібно використовувати запити POST. Просто слід знати особливості цих методів, і тоді легко буде правильно їх застосовувати.
- GET запити можуть залишатися в історії браузера
- GET запити можуть кешуватися
- GET запити можна передавати, розповсюджувати і т.д.
- GET запити можна зберігати у закладках
- GET запити можна легко змінювати (підмінювати)
Відповідно до RFC 2616, встановлено угоду, що методи GET і HEAD ніколи не повинні виконувати будь-які функції, крім доставки інформації. Ці методи слід розглядати як цілком безпечні. Це дозволяє агентам користувача представляти інші методи, такі як POST, PUT та DELETE, особливим способом, так що користувач сам дбатиме про можливість небезпечних операцій, які можуть бути виконані в результаті реалізації запиту. Тому:
Правило 2. Для небезпечних дій використовують запит POST, а для безпечних - GET
Примітка. Коли необхідно (дуже хочеться) використовувати якості методу GET, можна спробувати зробити небезпечну дію безпечною. Наприклад, призначити кожному запиту унікальний ідентифікатор та перевіряти на стороні сервера, чи був запит із таким номером вже оброблений.
Важлива примітка. нанасправді, навіть за використання методу POST все небезпечні дії необхідно захищати за сервера, тобто. передбачати відповідну перевірку вхідних даних.
Довжина URL обмежена. Вона може бути кілька десятків тисяч символів. Для різних браузерів та різних операційних систем максимальний розмір рядка URL може відрізнятися, але важливо, що він обмежений. Таким чином:
Правило 3. Для роботи з великими даними використовувати метод POST
Є ще нюанс при роботі з AJAX. Виконуючи запит XMLHttpRequest, браузери реалізують запити POST як двопрохідний процес (спочатку посилають заголовок, а потім дані). Тому GET запити будуть виконуватися набагато швидше, а це дуже важливо для AJAX оточення.
Правило 4. Використовуйте GET в AJAX додатках
Для тих, кому всі вище наведені міркування є абстрактними розмовами, яким бракує конкретики і ясності, наведемо простий алгоритм вибору між методами GET і POST.