Chuyển đến nội dung chính

Mã hóa đúng các tham số của chuỗi truy vấn

Công cụ có hai chế độ. Thành phần (encodeURIComponent) dành cho một tên hoặc giá trị tham số; URL đầy đủ (encodeURI) dành cho cả một URL đã có cấu trúc đúng. Nhầm lẫn giữa hai chế độ là nguyên nhân phổ biến nhất khiến chuỗi truy vấn bị hỏng.

Ví dụ minh họa

Chế độ URL đầy đủ giữ dấu & bên trong giá trị, nên máy chủ đọc thành hai tham số thay vì một.

Đầu vào
https://example.com/search?q=salt & pepper&page=2
Kết quả · encodeURI()
https://example.com/search?q=salt%20&%20pepper&page=2

Tham số mà máy chủ đọc được

  • "q" = "salt "
  • " pepper" = ""
  • "page" = "2"

Mã hóa giá trị ở chế độ Thành phần trước sẽ giữ nó là một tham số duy nhất.

Đầu vào
salt & pepper
Kết quả · encodeURIComponent()
salt%20%26%20pepper

https://example.com/search?q=salt%20%26%20pepper&page=2

Tham số mà máy chủ đọc được

  • "q" = "salt & pepper"
  • "page" = "2"

So sánh chế độ Thành phần và URL đầy đủ theo từng ký tự

Ký tựThành phầnURL đầy đủ
:%3A:
/%2F/
?%3F?
#%23#
&%26&
=%3D=
+%2B+
␠%20%20
é%C3%A9%C3%A9

Cách công cụ xử lý

  • Mã hóa riêng từng tên và giá trị tham số ở chế độ Thành phần, chế độ này thoát & = ? # + và /.
  • Nối các cặp đã mã hóa theo dạng tên=giá trị bằng dấu &, rồi thêm kết quả vào sau dấu ? trong URL.
  • Chỉ dùng chế độ URL đầy đủ cho cả URL: chế độ này giữ nguyên : / ? # & = + nên không thể bảo vệ một giá trị chứa các ký tự đó.

Hướng dẫn mã hóa URL