Trong bài này, chúng ta sẽ hiểu sự khác biệt giữa phương thức GET và POST trong HTML form.
Phương thức GET
- Tham số được đặt bên trong URL.
- Mục đích chính: truy xuất dữ liệu/tài liệu.
- Có thể bookmark kết quả truy vấn.
- Dễ bị tấn công, không đủ an toàn.
- Dữ liệu và thông tin đăng nhập hiện rõ dạng plain text.
- Ai cũng có thể thấy.
- Ràng buộc dữ liệu: chỉ cho phép ký tự ASCII.
- Độ dài tối đa ~2000 ký tự (tùy trình duyệt/server).
- Nên giữ độ dài dữ liệu tối thiểu.
- Dữ liệu có thể được cache khi dùng GET.
- Không phù hợp làm việc với ngôn ngữ nước ngoài (cần encoding).
- Được dùng nhiều trong công cụ tìm kiếm.
- GET chỉ tạo một kết nối với web server.
Phương thức POST
- Tham số được đặt bên trong body của request.
- Mục đích chính: cập nhật/gửi dữ liệu (tạo mới, sửa, xóa).
- Không thể bookmark kết quả truy vấn.
- An toàn hơn so với GET.
- Có thể lưu dữ liệu lên tới 8 MB (tùy cấu hình server).
- Độ dài dữ liệu không giới hạn cụ thể.
- Không hiển thị biến trong URL.
- Không có ràng buộc ký tự, cho phép tất cả ký tự (binary, Unicode).
- Dữ liệu không được cache khi dùng POST.
- POST tạo hai kết nối với web server (request headers + body).
| Đặc điểm | GET | POST |
|---|---|---|
| Vị trí dữ liệu | URL (query string) | Request body |
| Bảo mật | Thấp | Cao hơn |
| Cache | Có | Không |
| Bookmark | Có | Không |
| Dung lượng | ~2KB | Lớn (MB) |
| Idempotent | Có | Không |
Lời khuyên: Dùng GET cho truy xuất dữ liệu không thay đổi trạng thái (search, filter, pagination). Dùng POST cho thao tác thay đổi dữ liệu (login, submit form, upload, API write).