什么是有效的URL查询字符串?(What is a valid URL query string?)

2019-07-03 19:32发布

什么字符的URL查询字符串被允许?

请查询字符串必须遵循特定的格式?

Answer 1:

每http://tools.ietf.org/html/rfc3986

在2.2节保留字符,以下字符列:

保留= GEN-delims /子delims

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

“!” 子delims = / “$”/ “&”/ ““”/ “(”/ “)”/ “*”/ “+”/“,”/ “”/ “=”

该规范接着说:

如果URI组件数据将与保留字符的目的作为分隔符冲突,则冲突的数据必须是在形成之前URI编码百分比。

接着,在第2.3节未保留的字符,以下列出:

未预留= ALPHA / DIGIT /“ - ”“” / /“_” /“〜”



Answer 2:

维基百科有你的答案: http://en.wikipedia.org/wiki/Query_string

“URL编码:某些字符不能是一个URL(例如,空格)和一些其他字符在一个URL有特殊意义的部分:例如,字符#可被用于进一步指定一个第(或片段)的的文件;字符=用于将名称从值分隔A查询字符串可能需要被转换为满足这些约束这可以使用已知作为URL编码的模式来完成。

尤其是,编码的查询字符串使用以下规则:

  • 字母(AZ和az),数字(0-9)和字符, ' '' - ', '〜' 和 '_' 被保持原样
  • SPACE被编码为“+”或%20 [编辑]
  • 所有其他字符被编码为FF%十六进制表示与第一编码为UTF-8(或其他指定的编码)的任何非ASCII字符

对应于该代字号(“〜”)字符的八位组通常编码为“%7E”年长URI处理的实现; 在“%7E”可以通过“〜”代替,而不会改变它的解释。 空间“+”和的选择的编码“原样”的字符从RFC 1738区分该编码”

关于格式,查询字符串名称值对。 的? 分离从URL查询字符串。 每个名称值对由符号(&),而名称(键)和值由等号(=)分隔分离。 例如。 http://domain.com?key=value&secondkey=secondvalue

下我提供的维基百科参考结构

  • 问号被用作分离器,而不是查询字符串的一部分。
  • 查询字符串由一系列字段值对的
  • 内每一对中,字段名称和值被分离用等号,“=”。
  • 该系列对由符号分离,“&”(或分号“;”针对URL嵌入在HTML,而不是由一个产生...;见下文)。
  • W3C建议所有web服务器支持分号分隔除了符号分离器[6],以允许应用程序/ x-WWW窗体-urlencoded在HTML文档内的网址查询字符串,而不必实体转义&符号。


Answer 3:

此链接有答案并格式化值,你都需要。

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

为了您的方便,这是列表:

<     %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


文章来源: What is a valid URL query string?