Parameters GET参数中允许的字符
GET参数中允许哪些字符不进行编码或转义?我的意思是这样的: 你可以用什么来代替XYZ?我认为只有以下几个字符:Parameters GET参数中允许的字符,parameters,get,special-characters,character,Parameters,Get,Special Characters,Character,GET参数中允许哪些字符不进行编码或转义?我的意思是这样的: 你可以用什么来代替XYZ?我认为只有以下几个字符: a-z(a-z) 0-9 - _ 这是完整列表还是允许使用其他字符 我希望你能帮助我。提前谢谢 “|”!“|”~“|”*“|”“|”(“|”)也可以接受。实际上,如果GET参数编码正确,任何东西都可以包含在GET参数中。字母数字字符和所有这些字符 ~-*”(), 在URL中有效 所有其他字符都必须进行编码。有些保留字符具有保留的含义,它们是分隔符-:/?#[]@-和子分隔符-!
- a-z(a-z)
- 0-9
- -
- _
我希望你能帮助我。提前谢谢
“|”!“|”~“|”*“|”“|”(“|”)也可以接受。实际上,如果GET参数编码正确,任何东西都可以包含在GET参数中。字母数字字符和所有这些字符
~
-
代码>*
”
(
)
,
在URL中有效
所有其他字符都必须进行编码。有些保留字符具有保留的含义,它们是分隔符-:/?#[]@
-和子分隔符-!$&'()*+,;=代码>
还有一组称为无保留字符的字符-字母数字和-.\uz
-不需要编码
这意味着,当不属于非保留字符集的任何字符没有特殊意义时(例如,当作为GET
参数的一部分传递时),都应该对其进行%编码
另请参见URL中允许使用哪些字符:
仅字母数字、特殊字符“$-551;+!*”()、”和
可以使用用于保留目的的保留字符
在URL中未编码
保留字符是“;”、“/”、“?”、“:”、“@”、“=”和“&”,这意味着如果您希望使用它们,您需要对它们进行URL编码。我在bash中使用Chrome地址栏和$QUERY\u字符串进行了测试,并观察到以下情况:
~!@$%^&*()-_=+[{]}\|;:',./?
和grave(backtick)
以明文形式传递
,“
,
分别转换为%20
,%22
,%3C
和%3E
#
被忽略,因为它由ye olde使用
“个人咬紧牙关太长了,读不下去了,”(P>>):在URCIS和RCF39中指定了URI(包含URN和URL)的编码规则,这里是TL;这些冗长而枯燥的文档的DR;
百分比编码,也称为URL编码,是一种在特定情况下对URI中的信息进行编码的机制。URI中允许的字符可以是保留的,也可以是非保留的。保留字符是指有时具有特殊含义的字符,但它们不是唯一需要编码的字符
有66个不需要任何编码的未保留字符:
abcdefghijklmnopqrstuvwxyzabefghijklmnopqrstuvxyz012456789-。
有18个保留字符需要编码:!*'();:@&=+$,/?#[]
,所有其他字符都必须编码
要对字符进行百分比编码,只需将“%”与其ASCII值串联在一起即可
十六进制。php函数“urlencode”和“rawurlencode”可以为您完成这项工作。问题是,GET参数中允许哪些字符不进行编码或转义
根据(通用URL语法)和(HTTP/S URL语法),只需对查询集之外的字符进行百分比编码,请参见下面的定义
然而,还有一些额外的规范,如HTML5、W3C推荐。这些文档为一些字符添加了特殊的含义,特别是像=&+;这样的符号
这里的其他答案建议大多数保留字符应该编码,包括“/”?”。这是不正确的。事实上,建议不要对“/”?”字符进行百分比编码
对于可用性来说,有时最好避免百分比-
对这些字符进行编码
RFC3986将查询组件定义为:
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
百分比编码机制用于表示数据中的八位字节
当八位字节的对应字符位于
允许的集合或正在用作
组成部分
结论是XYZ部件应该编码:
special: # % = & ;
Space
sub-delims
out of query set: [ ]
non ASCII encodable characters
除非特殊符号是键=值分隔符
允许对其他字符进行编码,但这不是必须的。但是这些字符有特殊的含义,所以如果你不想发送%or+,你必须对它们进行编码。是的,我不知道为什么我要写%Thank you!我只想知道哪些字符可以不用编码或转义就使用。我应该更好地指出这一点。那么我真的可以使用*!'()|没有对它们进行编码?非常感谢!所以我必须将.and~添加到我的列表中?我可以写index.php吗?page=start\u en-new~。而不转义它吗?如果说不能,但不应该,那就有点太大胆了。如果要规范化URI,就必须转义未保留的字符(并且只转义未保留的字符),但它很可能在无需转义的情况下实际工作。通常,您有转义函数,可以转义所有需要转义的内容。您通常使用此函数来转义传递的所有参数。天哪,我没有仔细查看您的示例。我以为这只是一组通用的特殊字符;-)不,您没有当然,我们必须避开这些,因为它们是无保留的。很抱歉混淆了。至于urlencode()
我不知道它是否工作正常-PHP函数并不总是这样-但是如果它工作正常,那么可以用它进行测试;-)就像我说的那样-无保留地转义所有内容。RFC说实际上它不允许转义字符/
和?
。我查找这个,因为Swift不会转义东南方