Những ký tự đặc biệt nào an toàn để sử dụng trong url?


13

Những ký tự đặc biệt nào an toàn để sử dụng trong url?


2
Sẽ nhanh hơn và dễ dàng hơn khi hỏi những ký tự đặc biệt nào không an toàn để sử dụng trong một URL (theo câu trả lời của Andreas Bonini bên dưới).
Đánh dấu Hatton

2
Hỏi những gì không an toàn cũng khó trả lời: Bất kỳ ký tự không phải mã ascii nào cũng cần được mã hóa theo phần trăm.
tân

2
@neo: không, không: O
Thomas Bonini

Câu trả lời:


10

Các ký tự an toàn là az, AZ, 0-9 và _ - (gạch dưới và trừ), bên cạnh các ký tự dành riêng được sử dụng cho các tham số.

Các nhân vật khác sẽ đưa ra vấn đề ở một mức độ nào đó. ví dụ: nếu một tham số là một mảng?param=array[content] tức là sẽ hiển thị một url làm trắng dấu ngoặc vuông được mã hóa, trông xấu và không thể đọc được.

Nhưng vấn đề không chỉ là nó xấu, giả sử bạn có jpg với một nhân vật bên cạnh những nhân vật an toàn hơn, nhiều lần trình duyệt sẽ không thể tải xuống khi nhận được 404. Đây là vấn đề của trình duyệt cũ và một số trình duyệt di động.

Làm thế nào để kiểm tra điều này?

  • đặt một loạt các hình ảnh / js / css với các ký tự bạn muốn kiểm tra tên trong một trang công khai có nhiều khách truy cập
  • Tạo trang 404 gửi cho bạn email mỗi lần truy cập

Tôi có một hộp thư đến với 14000 email chứng minh quan điểm của mình.


5
tốt, thay vì "nhân vật an toàn" tôi sẽ nói "nhân vật cực kỳ an toàn" - thông số kỹ thuật cho phép nhiều hơn, nhưng tôi đồng ý với bạn rằng tốt hơn là nên bảo thủ ở đây.
Jeff Atwood

2
Có gì sai với thời gian?
BlueWhale

11

Các ký tự sau có ý nghĩa đặc biệt trong thành phần đường dẫn của URL của bạn (thành phần đường dẫn là tất cả mọi thứ trước '?'):

  ";" | "/" | "?"

Ngoài những ký tự đó, các ký tự sau có ý nghĩa đặc biệt trong phần truy vấn của URL của bạn (mọi thứ sau '?'). Do đó, nếu họ theo sau '?' bạn cần phải thoát khỏi chúng:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

Để được giải thích sâu hơn, xem RFC .


3
Tất nhiên, chỉ để rõ ràng, câu trả lời này là ngược lại với câu hỏi. Câu hỏi yêu cầu những nhân vật nào an toàn, không phải những nhân vật không an toàn. Vì thật khó để trả lời câu hỏi ban đầu một cách mạnh mẽ, câu hỏi có lẽ nên được chỉnh sửa để hỏi nó theo cách khác và phù hợp với câu trả lời này.
Đánh dấu Hatton

3

Các câu trả lời ở đây là tốt, nhưng có một ngoại lệ nữa tôi nghĩ là đáng nói - các nhân vật không phải tiếng Anh. Tham khảo câu hỏi SF này tại đây , các ký tự như ñ (như trong Español) là hoàn toàn hợp pháp, NẾU chúng đã được mã hóa chính xác trong DNS của bạn.

Bạn phải sử dụng Punycode trong DNS của mình để giải quyết chúng trong các trình duyệt hiện đại (mục nhập cho đặc biệt là xn--espaol-zwa) nhưng giờ đây chúng hoàn toàn an toàn để sử dụng trong các tên miền, vì chúng cũng dễ dàng cho những người không nói tiếng Anh gõ .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.