2012-11-14 27 views
10

Những ký tự nào được phép trong chuỗi truy vấn URL?Chuỗi truy vấn URL hợp lệ là gì?

Chuỗi truy vấn có phải tuân theo định dạng cụ thể không?

+1

Bất cứ điều gì khác hơn là những nhu cầu đó phải được chạy thoát được cho phép trong một URL, xem những gì cần phải được thoát trong câu hỏi này: http: //stackoverflow.com/questions/2322764/what-characters-must-be-escaped-in-an-http-query-string –

Trả lời

10

mỗi http://tools.ietf.org/html/rfc3986

Trong phần 2.2 reserved nhân vật, các nhân vật sau đây được liệt kê:

reserved = gen-delims/tiểu delims

gen-delims = “:”/“/”/“? ”/“ # ”/“ [”/“] ”/“ @ ”

sub-delims =“! ”/“ $ ”/“ & ”/“ '”/“ (”/ “)”/“*”/“+”/“”/“;” /“=”

Các spec sau đó nói:

Nếu dữ liệu cho một thành phần URI sẽ mâu thuẫn với mục đích ký tự dành riêng như là một dấu phân tách, khi đó dữ liệu xung đột phải được mã hóa phần trăm trước khi URI được tạo.

Tiếp theo, trong mục 2.3 Nhân vật Không Giới Hạn, sau đây được liệt kê:

ưa thổ lộ = ALPHA/DIGIT/“-”// “_”/“~”

“”
+2

[RFC 3986 - ** Phần 3.4 **] (http: //tools.ietf. org/html/rfc3986 # page-23) mô tả cụ thể chuỗi truy vấn và đáng chú ý bao gồm các phân đoạn phụ và một số ít người khác. Tóm lại: 'A'-'Z',' a'-'z', '0'-'9',' -', '.',' _', '~', '!', '$' , '&', ''', '(', ')', '*', '+', ',', ';', '=', ':', '@', '/', ' ? ' – MrWhite

11

Wikipedia có câu trả lời của bạn: http://en.wikipedia.org/wiki/Query_string

"URL Encoding: một số ký tự không thể là một phần của một URL (ví dụ, không gian) và một số ký tự khác có ý nghĩa đặc biệt trong một URL: ví dụ, ký tự # có thể được sử dụng để chỉ định thêm một phần con (hoặc đoạn) của một tài liệu; ký tự = được sử dụng để tách một tên khỏi một giá trị. Chuỗi truy vấn có thể cần được chuyển đổi để đáp ứng các ràng buộc này. Điều này có thể được thực hiện bằng cách sử dụng lược đồ được gọi là mã hóa URL.

Đặc biệt, mã hóa các chuỗi truy vấn sử dụng các quy tắc sau: ' '

  • Letters (AZ và az), các số (0-9) và các nhân vật,' -', '~' và '_' còn lại như nó vốn có
  • SPACE được mã hóa như '+' hoặc% 20 [cần dẫn nguồn]
  • Tất cả các nhân vật khác được mã hóa như đại diện hex% FF với bất kỳ ký tự ASCII đầu tiên được mã hóa theo UTF-8 (hoặc mã hóa được chỉ định khác)

T ông octet tương ứng với ký tự dấu ngã ("~") thường được mã hóa là "% 7E" bởi các triển khai xử lý URI cũ hơn; "% 7E" có thể được thay thế bằng "~" mà không thay đổi cách diễn dịch của nó. Mã hóa của SPACE là '+' và việc chọn các ký tự "as-is" phân biệt mã hóa này với RFC 1738. "

Về định dạng, chuỗi truy vấn là cặp giá trị tên. URL.Mỗi cặp giá trị tên được phân tách bằng dấu và (&) trong khi tên (khóa) và giá trị được phân tách bằng dấu bằng (=). ví dụ. http://domain.com?key=value&secondkey=secondvalue

Dưới Cấu trúc trong tài liệu tham khảo Wikipedia tôi cung cấp:

  • Dấu chấm hỏi được sử dụng như một dấu phân cách và không phải là một phần của chuỗi truy vấn.
  • Chuỗi truy vấn bao gồm một loạt các cặp giá trị trường
  • Trong mỗi cặp, tên trường và giá trị được phân tách bằng dấu bằng, '='.
  • Chuỗi các cặp được phân tách bằng dấu và, '&' (hoặc dấu chấm phẩy ';' cho các URL được nhúng trong HTML và không được tạo bởi ...; xem bên dưới).
  • W3C khuyến cáo rằng tất cả các máy chủ web hỗ trợ dấu phân cách dấu chấm phẩy và dấu phân tách [6] để cho phép chuỗi truy vấn ứng dụng/x-www-form-urlencoded trong URL trong tài liệu HTML mà không phải thực thi ký tự thoát.
+0

Bạn có thể cung cấp trích dẫn cho đoạn cuối cùng không? –

+0

Tôi đã thêm đoạn đó dựa trên trải nghiệm cá nhân nhưng tôi đã cập nhật và thêm nhiều thông tin hơn mà tôi có thể tìm thấy để sao lưu nó. Khi làm như vậy, tôi nhận thấy rằng các khóa-giá trị không chỉ được phân tách bằng ký hiệu và có thể là dấu chấm phẩy mặc dù trước đây tôi chưa bao giờ thấy nó. Ngoài ra, dấu chấm hỏi không phải là một phần của QS mà là một dấu phân tách. – cbillowes

+1

Trong văn bản của câu trả lời: "mỗi cặp giá trị tên được bắt đầu bằng dấu" và từ "(" có tiền tố ") là gây hiểu lầm. Xa hơn, có những cặp "... được tách biệt ...". – laune

1

Liên kết này có các giá trị câu trả lời và định dạng bạn cần.

https://perishablepress.com/url-character-codes/

Để tiện cho bạn, đây là danh sách:

<  %3C 
>  %3E 
#  %23 
%  %25 
{  %7B 
}  %7D 
|  %7C 
\  %5C 
^  %5E 
~  %7E 
[  %5B 
]  %5D 
`  %60 
;  %3B 
/ %2F 
?  %3F 
:  %3A 
@  %40 
=  %3D 
&  %26 
$  %24 
+  %2B 
"  %22 
space  %20 
+0

Lưu ý rằng [câu trả lời chỉ có liên kết] (http://meta.stackoverflow.com/tags/link-only-answers/info) không được khuyến khích, các câu trả lời SO phải là điểm cuối của việc tìm kiếm giải pháp (so với nhưng một điểm dừng khác của tài liệu tham khảo, mà có xu hướng để có được cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra

Các vấn đề liên quan