Phương pháp yêu cầu HTML

HTTP là gì?

Chuẩn truyền tải siêu văn bản (Hypertext Transfer Protocol, viết tắt HTTP) nhằm mục đích cho phép giao tiếp giữa khách hàng và máy chủ.

HTTP đóng vai trò là giao thức yêu cầu - phản hồi giữa khách hàng và máy chủ.

Ví dụ: Khách hàng (browser) gửi yêu cầu HTTP đến máy chủ; sau đó máy chủ trả về phản hồi cho khách hàng. Phản hồi chứa thông tin về trạng thái của yêu cầu, có thể chứa nội dung được yêu cầu.

Phương pháp HTTP

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH
  • OPTIONS

Hai phương pháp phổ biến nhất là: GET và POST.

Phương pháp GET

GET được sử dụng để yêu cầu dữ liệu từ tài nguyên được chỉ định.

GET là một trong những phương pháp HTTP phổ biến nhất.

Lưu ý rằng chuỗi truy vấn (cặp tên/giá trị) được gửi trong URL của yêu cầu GET:

/test/demo_form.php?name1=value1&name2=value2

Một số ghi chú khác về yêu cầu GET:

  • Yêu cầu GET có thể được lưu trữ
  • Yêu cầu GET được lưu trong lịch sử duyệt web của trình duyệt
  • Yêu cầu GET có thể lưu trữ làm dấu trang
  • Yêu cầu GET không nên được sử dụng khi xử lý dữ liệu nhạy cảm
  • Yêu cầu GET có giới hạn về độ dài
  • Yêu cầu GET chỉ nên được sử dụng để lấy dữ liệu (không sửa đổi)

Phương pháp POST

POST được sử dụng để gửi dữ liệu đến máy chủ để tạo/cập nhật tài nguyên.

Dữ liệu được gửi qua POST lưu trữ trong phần thân của yêu cầu HTTP:

POST /test/demo_form.php HTTP/1.1
Host: codew3c.com
name1=value1&name2=value2

POST là một trong những phương pháp HTTP phổ biến nhất.

Một số ghi chú khác về yêu cầu POST:

  • Yêu cầu POST sẽ không được lưu trữ
  • Yêu cầu POST sẽ không được lưu trong lịch sử duyệt web của trình duyệt
  • POST không thể lưu trữ làm dấu trang
  • Yêu cầu POST không có yêu cầu về độ dài dữ liệu.

Phương pháp PUT

PUT được sử dụng để gửi dữ liệu đến máy chủ để tạo/cập nhật tài nguyên.

Sự khác biệt giữa POST và PUT là yêu cầu PUT là idempotent (không thay đổi). Nghĩa là, việc gọi lại cùng một yêu cầu PUT nhiều lần sẽ luôn luôn tạo ra cùng một kết quả. Ngược lại, việc gọi lại yêu cầu POST nhiều lần có tác dụng phụ là tạo ra nhiều lần cùng một tài nguyên.

Phương pháp HEAD

HEAD gần như giống hệt GET, nhưng không có phản hồi chính văn bản.

Nói cách khác, nếu yêu cầu GET /users trả về danh sách người dùng, thì yêu cầu HEAD /users sẽ gửi cùng một yêu cầu nhưng không trả về danh sách người dùng.

Yêu cầu HEAD rất hữu ích để kiểm tra nội dung sẽ được trả về bởi yêu cầu GET trước khi gửi yêu cầu GET thực tế (ví dụ: trước khi tải xuống tệp lớn hoặc trước khi gửi phản hồi chính văn bản).

Phương pháp DELETE

Phương pháp DELETE xóa tài nguyên được chỉ định.

Phương pháp OPTIONS

Phương pháp OPTIONS mô tả các tùy chọn giao tiếp của tài nguyên mục tiêu.

So sánh GET với POST

Bảng dưới đây so sánh hai phương pháp HTTP: GET và POST.

  GET POST
Nút quay lại/refresh Vô hại Dữ liệu sẽ được gửi lại (trình duyệt nên thông báo cho người dùng rằng dữ liệu sẽ được gửi lại).
Dấu trang Có thể lưu trữ làm dấu trang Không thể lưu trữ làm dấu trang
Lưu trữ Có thể lưu trữ Không thể lưu trữ
Loại mã hóa application/x-www-form-urlencoded application/x-www-form-urlencoded hoặc multipart/form-data. Sử dụng mã hóa kép cho dữ liệu nhị phân.
Lịch sử Tham số sẽ được lưu trong lịch sử trình duyệt. Tham số sẽ không được lưu trong lịch sử trình duyệt.
Giới hạn độ dài dữ liệu Có. Khi gửi dữ liệu, phương pháp GET sẽ thêm dữ liệu vào URL; độ dài của URL bị giới hạn (độ dài tối đa của URL là 2048 ký tự). Không có giới hạn.
Giới hạn loại dữ liệu Chỉ cho phép ký tự ASCII. Không có giới hạn. Cũng cho phép dữ liệu nhị phân.
An toàn

So với POST, GET có tính an toàn thấp hơn vì dữ liệu được gửi là một phần của URL.

Đừng bao giờ sử dụng GET để gửi mật khẩu hoặc thông tin nhạy cảm khác!

POST an toàn hơn GET vì các tham số sẽ không được lưu trong lịch sử trình duyệt hoặc bản ghi máy chủ web.
Xem được Dữ liệu trong URL đối với tất cả mọi người đều có thể nhìn thấy. Dữ liệu sẽ không hiển thị trong URL.