Các phương thức Request trong giao thức HTTP
Giao thức HTTP là gì?
Giao thức HTTP (Hypertext Transfer Protocol) được thiết kế để cho phép giao tiếp giữa clients và servers.
HTTP làm việc như một giao thức yêu cầu-phản hồi (request-response) giữa client và server.
Ví dụ: Một client (browser) gửi một request HTTP tới server; rồi server response lại client. Response này chứa thông tin trạng thái về request đó và có thể cũng chứa nội dung của request.
Bạn cần nắm rõ cơ chế hoạt động của phương thức HTTP để sử dụng cho ứng dụng web động hoặc Web API.
Các phương thức HTTP
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
- CONNECT
- TRACE
Hai phương thức thông dụng HTTP là: GET và POST.
Phương thức GET
GET được sử dụng để request dữ liệu từ một tài nguyên chỉ định.
Chú ý rằng query string là một cặp name/value được gắn vào URL của request GET:
Ví dụ: https://timoday.edu.vn/test/demo_form.php?name1=value1&name2=value2
Một vài điểm chú ý về request GET:
- request GET có thể được lưu vào bộ nhớ đệm (cached)
- reguest GET có thể được giữ lại trong lịch sử trình duyệt
- request GET có thể được lưu lại trong bookmarked
- request GET không nên sử dung khi bạn gửi đi những dữ liệu nhạy cảm ví dụ như mật khẩu, số tài khoản …
- request GET hạn chế về độ dài
- request GET chỉ được sử dụng để lấy dữ liệu (không sửa đổi)
Phương thức POST
POST được sử dụng để gửi dữ liệu tới server để thêm mới/cập nhật (create/update) một tài nguyên.
Dữ liệu gửi tới server với phương thức POST được lưu trữ trong thân của request HTTP.:
POST /test/demo_form.php HTTP/1.1
Host: timoday.edu.vnname1=value1&name2=value2
Một vào chú ý với request POST:
- request POST không bao giờ được lưu vào bộ nhớ đệm (cached)
- request POST không giữ lại trong lịch sử trình duyệt
- request POST không thể lưu lại trong bookmarked
- request POST không bị hạn chế về độ dài dữ liệu
So sánh GET với POST
Bản sau đây so sánh hai phương thức HTTP: GET và POST.
GET | POST | |
---|---|---|
Nút BACK/Reload | Không ảnh hưởng gì, không có hại gì | Dữ liệu sẽ bị gửi lại (trình duyệt sẽ thông báo tới người dùng rằng dữ liệu sẽ bị được gửi lại) |
Bookmarked | Có thể được bookmarked | Không thể bookmarked |
Cached | Có thể cached | Không cached |
Encoding type | application/x-www-form-urlencoded | application/x-www-form-urlencoded hoặc multipart/form-data. Sử dụng multipart encoding cho dữ liệu binary |
History | Các tham số (Parameters) được lưu giữ trong lịch sử trình duyệt | Parameters không được lưu giữ trong lịch sử trình duyệt |
Giới hạn về độ dài dữ liệu | Có, khi dữ liệu gửi đi, phương thức GET thêm dữ liệu tới URL; và độ dài URL là giới hại (độ dài tối đa URL là 2048 ký tự) | Không hạn chế |
Hạn chế kề kiểu ký tự | Chỉ chấp nhận các ký tự ASCII | Không hạn chế. Dữ liệu nhị phân cũng cho phép. |
Security | GET là ít bảo mật hơn so với POST bở vì dữ liệu được đưa lên URL và mọi người có thể nhìn thấy
Không bao giờ được dùng GET để gửi dữ liệu nhạy cảm như mật khẩu, số tài khoản … |
POST an toàn hơn GET vì các tham số không được lưu trữ trong lịch sử trình duyệt hoặc trong các logs của web server |
Visibility | Dữ liệu hiển thị hết cho mọi người trên URL | Data không được hiển thị trên URL |