Có hai phương thức HTTP hay được dùng nhất: GET và POST.
HTTP là gì?
Giao Thức Truyền Tải Siêu Văn Bản (HTTP) được thiết kế cho phép thực hiện các giao tiếp giữa máy khách và máy chủ.
HTTP làm việc dựa trên giao thức yêu cầu – phản hồi giữa máy khách và server.
Một trình duyệt web có thể là máy khách và một ứng dụng trên máy tính được lưu trữ như một website có thể là server.
Ví dụ: Một máy khách (trình duyệt) gửi yêu cầu HTTP tới server; sau đó server hồi đáp lại yêu cầu của máy khách. Việc hồi đáp này bao gồm thông tin trạng thái về yêu cầu và có thể còn bao gồm cả nội dung đã yêu cầu.
Hai phương thức yêu cầu của HTTP: GET và POST
Có hai phương thức thường được sử dụng để yêu cầu và hồi đáp giữa máy khách và server là: GET và POST.
- GET – Các yêu cầu dữ liệu từ một nguồn chỉ định
- POST – Gửi dữ liệu để xử lý tới một nguồn nhất định
Phương thức GET
Lưu ý chuỗi truy vấn (cặp tên / giá trị) được gửi đi trong URL của phương thức truy vấn GET:
/ducanhfile/demo.php?name1=value1&name2=value2
Một số lưu khác về truy vấn GET:
- Truy vấn GET có thể được lưu lại (cached)
- Truy vấn GET vẫn được lưu lại trong lịch sử trình duyệt
- Truy vấn GET có thể được bookmark (đánh dấu rồi xem lại sau)
- Truy vấn GET không bao giờ được sử dụng để gửi đi các dữ liệu nhạy cảm
- Truy vấn GET có những hạn chế về chiều dài dữ liệu
- Truy vấn GET chỉ nên sử dụng cho việc lấy dữ liệu GET
Phương thức POST
Lưu ý rằng chuỗi truy vấn (cặp tên/giá trị) được gửi đi trong thông điệp HTTP của truy vấn request:
POST /test/demo_form.php HTTP/1.1
Host: freehost.page
name1=value1&name2=value2
Một số lưu ý khác về truy vấn POST:
- Truy vấn POST không bao giờ được lưu trữ (cached)
- Truy vấn POST không được lưu lại trong lịch sử tình duyệt
- Truy vấn POST không thể bookmark
- Truy vấn POST không hạn chế chiều dài dữ liệu
So sánh GET và POST
Bảng dưới đây so sánh hai phương thức HTTP: GET và POST.
GET | POST | |
---|---|---|
Khi tải lại trang hoặc nhấn nút BACK trên trình duyệt | Vô hại | Dữ liệu sẽ được gửi thêm lần nữa (trình duyệt phải cảnh báo người dùng rằng dữ liệu sẽ được gửi lên lần nữa) |
Bookmark | Có thể bookmark | Không thể bookmark |
Bộ nhớ Cached | Có thể được lưu trong bộ nhớ cached | Không lưu trong bộ nhớ cached |
Kiểu Encoding | application/x-www-form-urlencoded | application/x-www-form-urlencoded hoặc multipart/form-data. Sử dụng mã hóa nhiều phần cho dữ liệu nhị phân |
Lịch sử | Các thông số vẫn được lưu trữ trong lịch sử trình duyệt | Các thông số không được lưu trữ trong lịch sử trình duyệt |
Các hạn chế về chiều dài dữ liệu | Vâng, khi gửi dữ liệu, phương thức GET thêm dữ liệu vào URL; và độ dài tối đa của URL là có giới hạn (con số cụ thể là 2048 ký tự) | Không có hạn chế |
Hạn chế trong kiểu dữ liệu | Chỉ bảng mã ASCII được chấp nhận (vì nó liên quan đến URL) | Không có hạn chế. Dữ liệu nhị phân cũng được phép |
Bảo mật | GET kém an toàn hơn khi so với POST, bởi vì dữ liệu gửi đi có một phần trong URL
Không bao giờ được dùng GET khi gửi dữ liệu mật khẩu (password) hoặc các thông tin nhạy cảm (ví dụ số thẻ ngân hàng) |
POST an toàn hơn một chút so với GET bởi vì thông số không được lưu trữ trong lịch sử duyệt web hoặc trong web server logs
|
Lộ | Dữ liệu được hiển thị cho tất cả mọi người trong URL | Dữ liệu không được hiển thị trong URL |
Các phương thức truy vấn HTTP khác
Bảng dưới đây liệt kê một số phương thức truy vấn HTTP khác:
Phương thức | Mô tả |
---|---|
HEAD | Tương tự như GET nhưng chỉ trả về HTTP header và không có thân tài liệu |
PUT | Tải lên một đại diện xác định của URI |
DELETE | Xoá tài nguyên xác định |
OPTIONS | Quay trở lại phương thức HTTP mà server hỗ trợ |
CONNECT | Chuyển đổi các yêu cầu kết nối đến một tunnel TCP/IP |
Cảm ơn tác giả. Bài viết rất hữu ích và cho một cái nhìn tổng quan về http :v