Phân tích URL
Tách một URL thành giao thức, host, đường dẫn và tham số truy vấn
Về công cụ này
Dán một URL vào và xem nó được mổ xẻ: giao thức, host, cổng, đường dẫn, fragment, cùng mọi tham số truy vấn hiện ra dưới dạng bảng khóa–giá trị đã giải mã. Công cụ dùng đúng bộ phân tích URL theo chuẩn WHATWG mà trình duyệt của bạn dùng khi điều hướng, nên cách hiểu bạn thấy chính là cách trình duyệt sẽ thực sự áp dụng — kể cả các trường hợp biên như bỏ cổng mặc định và chuẩn hóa đường dẫn.
Bảng tham số truy vấn là phần bạn sẽ dùng nhiều nhất: những chuỗi chuyển hướng OAuth dài dằng dặc, các liên kết gắn thẻ đo lường và lệnh gọi API bỗng đọc được chỉ trong một cái liếc, mỗi giá trị đều đã được giải mã phần trăm sẵn. Tên miền trần không kèm giao thức cũng được chấp nhận; khi phân tích, https:// sẽ được ngầm hiểu.
Nó ăn ý tự nhiên với công cụ mã hóa URL — phân tích một URL ở đây để tìm đúng tham số bạn cần, sửa giá trị, rồi mã hóa lại ở bên kia.
Câu hỏi thường gặp
- Vì sao URL sau khi phân tích hơi khác với cái tôi đã dán?
- Bộ phân tích theo chuẩn WHATWG có chuẩn hóa: nó đưa giao thức và host về chữ thường, bỏ cổng mặc định (:443 với https), rút gọn các đoạn ./ và ../ trong đường dẫn, và mã hóa những ký tự cần mã hóa. Thứ bạn thấy là dạng chuẩn tắc mà máy chủ và trình duyệt đều thống nhất.
- Nó xử lý được URL có khóa truy vấn trùng nhau không?
- Được — mỗi lần xuất hiện đều được liệt kê thành một hàng riêng, đúng thứ tự. Khóa trùng là hợp lệ và rất phổ biến: nhiều API đọc chúng thành mảng (?tag=a&tag=b).
- host và hostname khác nhau ở chỗ nào?
- hostname chỉ là tên miền (example.com); còn host bao gồm cả cổng được ghi rõ khi nó không phải cổng mặc định (example.com:8080). Khi cổng đúng bằng mặc định của giao thức, hai giá trị trông y hệt nhau vì phần cổng bị lược đi.
- Phần fragment (#...) có được gửi tới máy chủ không?
- Không. Mọi thứ sau dấu # ở lại trong trình duyệt — máy chủ không bao giờ thấy. Đó là lý do các ứng dụng một trang ngày trước dùng nó để định tuyến phía client, và cũng là lý do những tham số đo lường đặt sau dấu # thì backend không nhìn thấy.