So sánh biến _post và _get năm 2024

Khác Biệt Giữa Phương Thức POST và GET

POST và GET là hai trong số các phương thức phổ biến sử dụng trong biểu mẫu của trang web. Tuy nhiên có không hiểm các trường hợp lập trình viện đã lúng túng không biết nên lựa chọn giữa sử dụng phương thức GET hay POST khi tạo form. Cả hai phương thức này đều có thể được sử dụng để tạo biểu mẫu tuy nhiên việc sử dụng không chính xác sẽ gây khiến tạo ra những lỗ hổng bảo mật mà các hacker có thể khai thác triệt để.

Như vậy thì câu hỏi ở đây là trong trường hợp nào nên sử dụng phương thức GET và ngược lại trường hợp nào thì nên sử dụng POST?

Lựa Chọn Giữa GET và POST

Để xác định được phương thức nào cần sử dụng thì bạn chỉ cần ghi nhớ công thức đơn giản sau:

  • Nên sử dụng phương thức GET trong trường hợp bạn cần lấy dữ liệu của một tài nguyên (resource) và
  • Nên sử dụng phương thức POST trong trường hợp bạn cần tạo một tài nguyên.

Ở trên một tài nguyên có thể là một file văn bản, hình ảnh, video hoặc một trang HTML...

Một ví dụ cụ thể như trong trường hợp bạn cần tạo một form để người dùng upload avatar hay video thì chúng ta thường sẽ sử dụng phương thức POST. Tuy nhiên khi tải về avatar hoặc video thì bạn lại muốn sử dụng phương thức GET.

Tương tự chúng ta cũng sẽ sử dụng phương thức POST trong trang đăng ký tài khoản người dùng. Trong trường hợp này tài nguyên được tạo ra chính là dữ liệu người dùng như username, password ... Thông thường các dữ liệu này sẽ được lưu trữ trên cơ sở dữ liệu.

Ngoài ra khi cần xử lý các thông tin nhạy cảm ví dụ như password thì bạn cần sử dụng POST thay vì GET. Điều này là bởi vì dữ liệu gửi bằng phương thức GET được hiển thị trên địa chỉ URL dưới dạng query string. Ví dụ:

http://www.codehub.vn/bai-viet?page=2&limit=20

Với URL ở trên thì phần ký tự phía dau dấu ? đầu tiên page=2&limit=20 được gọi là query string với hai parameter là pagelimit chứa dữ liệu gửi đi sử dụng phương thức GET.

Điều này có nghĩa là trình duyệt sẽ lưu trừ dữ liệu này trong lịch sử duyệt web và sau đó sẽ hiển thị dữ liệu này để gợi ý người dùng khi họ nhập dữ liệu truy cập vào một URL có các ký tự tương tự ở các lần sau đó.

So Sánh GET và POST

Dưới đây là danh sách liệt kê cách điểm khác biệt mấu chôt giữa GET và POST:

  1. Lưu Trữ (Cache): Dữ liệu gửi bằng phương thức GET sẽ được lưu trữ lại trong query string và có thể được xem trong lịch sử trình duyệt. Ngược lại thì dữ liệu và địa chỉ URL của các request gửi bằng POST không được trình duyệt lưu lại.
  2. Đánh Dấu (Bookmark): Đối với request gửi bằng phương thức GET người dùng có thể bookmark lại được trên trình duyệt. Ngược lại các request gửi bằng POST sẽ không thể bookmark được.
  3. Gửi Lại Form: Với form gửi đi bằng phương thức GET bạn có thể gửi lại bằng cách bấm phím F5 hoặc Ctrl + R. Tuy nhiên với phương thức POST, nếu bạn muốn thực hiện việc gửi lại dữ liệu của form thì trình duyệt sẽ hiển thị một hộp thoại cảnh báo.
  4. Trở Lại Trang Trước: Trong trường hợp bạn đã gửi form dữ liệu đi rồi sau đó bấm phím Backspace để quay lại trang trước thì với phương thức GET bạn sẽ vẫn được cùng một nội dụng (chứa form). Ngược lại với POST thì bạn sẽ thấy một trang trống.
  5. Bảo Mật: Phương thức POST bảo mật hơn GET do dữ liệu không được lưu lại trong khi đó với GET thì bạn có thể hiển thị lại được các dữ liệu này.
  6. Dữ Liệu: Phương thức POST không giới hạn dung lượng dữ liệu gửi đi cũng như loại nhữ liệu (văn bản thông thường hay file nhị phân như upload tập tin hay hình ảnh, video...). Ngược lại, với phương thức GET dữ liệu gửi đi bị giới hạn sử dụng các ký tự chữ có trong bộ ký tự ASCII. Đồng thời dữ liệu của GET được gửi trong URL thông qua query string nên sẽ bị giới hạn bởi số lượng ký tự tối đa cho phép trong URL, với các trình duyệt thì số lượng ký tự tối đa cho phép trên URL, thông thường là 2048 ký tự.

Riêng đối với các bạn là developer thì cần chú ý rằng dữ liệu gửi bằng phương thức POST vẫn có thể được hiển thị thông qua công cụ phát triển developer tools của trình duyệt.

Một trong những câu hỏi phỏng vấn phổ biến là phân biệt giữa hai phương thức GET và POST. Nên hôm nay mình sẽ cùng tìm hiểu như thế nào nhé. 1. Mục đích sử dụng - GET: Phương thức GET được sử dụng để yêu cầu dữ liệu từ máy chủ. Thông tin yêu cầu được gửi dưới dạng tham số, nối sau URL. Ví dụ: `http://mywebsite.com/page?param1=value1¶m2=value2`. - POST: Phương thức POST được sử dụng để gửi dữ liệu từ client đến server. Dữ liệu gửi trong phần body và mã hóa nếu sử dụng HTTPS. 2. Bảo mật - GET: Thông tin được gửi dưới dạng tham số URL, do đó thông tin có thể hiển thị trực tiếp trên trình duyệt hoặc trong lịch sử duyệt web. Điều này nó không thích hợp để gửi những thông tin nhạy cảm như mật khẩu. POST: Dữ liệu được gửi trong phần body, không hiển thị trực tiếp trên trình duyệt hoặc trong lịch sử duyệt web và được mã hóa nếu sử dụng HTTPS. Điều này làm cho phương thức POST an toàn hơn. 3. Dung lượng dữ liệu GET: Giới hạn về dung lượng (thường là 255 ký tự). POST: Không giới hạn về dung lượng. 4. Lưu trữ cache GET: Các yêu cầu GET có thể được lưu trữ trong bộ nhớ cache của trình duyệt hoặc các máy chủ proxy. Điều này giúp cải thiện về hiệu suất. POST: Các yêu cầu POST không được lưu trữ trong bộ nhớ cache. Tóm lại: GET thường dùng để yêu cầu lấy dữ liệu từ máy chủ và POST thường được sử dụng để gửi dữ liệu từ client đến server. GET có hiệu suất tốt hơn, nhưng gửi dữ liệu bằng POST lại an toàn hơn và không giới hạn dung lượng.