该问题早在2001年,距今18年前就有人指出来了,并给JDK上报了BUG,他的描述如下: 首先,我们先把他的测试代码拿出来跑一下: 他为什么说空格encode之后应该是%20呢因为他在BUG里面提到了RFC2396 (RFC就不解释了,你只要知道是业界认证的权威标准就行): http://www.ietf.org/rfc/rfc2396.txt 在RFC2396的第2.4.1节,明确的说了:"%20"是US-ASCII 虽然经过试验,'+'和'%20'经过decode都能转化为空格,但是他认为,根据RFC2396来讲,这里只能是'%20',怎么能变成'+'呢?所以他觉得这是一个BUG。 在BUG里面提到的RFC2396标准是1998年8月提出来的: 而HTML 3.2规范在1996年就成为了W3C推荐标准。 所以,我觉得这就是历史原因!
因为他在BUG里面提到了RFC2396标准。(RFC就不解释了,你只要知道是业界认证的权威标准就行): http://www.ietf.org/rfc/rfc2396.txt ? 在RFC2396的第2.4.1节,明确的说了:"%20"是US-ASCII空格字符的转义编码。 去查询标准的ASCII码你也可以发现确实是这样的: ? 用代码实践一下,证明以上结论: ? 虽然经过试验,'+'和'%20'经过decode都能转化为空格,但是他认为,根据RFC2396来讲,这里只能是'%20',怎么能变成'+'呢?所以他觉得这是一个BUG。 在BUG里面提到的RFC2396标准是1998年8月提出来的: ? 而HTML 3.2规范在1996年就成为了W3C推荐标准。 所以,我觉得这就是历史原因!
yinggaozhen/doc-demo/tree/master/php/link 语法 @link [URI] [<description>] 描述 该标签只有1个跳转选项 @外部跳转链接 : 必须是满足 RFC2396 /doc-demo/tree/master/php/see 语法 @see [URI | FQSEN] [<description>] 描述 该标签可以有两个跳转选项 @外部跳转链接 : 必须是满足 RFC2396
URL 与 URI URI 是 Uniform Resource Identifier 的缩写,译作统一资源标识符,RFC2396 中对这三个单词做了如下定义: Uniform 规定统一的格式可方便处理多种不同类型的资源
参考 HTTP权威指南 rfc2396, rfc1738
很难验证一个URL是否合法的原因在于: 1.在 RFC2396/RFC3986 中进行了说明,但是也仅仅是说明。
1190000040631005资料5:有关HTTP的发展史参考https://www.cnblogs.com/songyao666/p/16065502.htmlN14.1、其他参考协议(原书第一章)RFC3986RFC2396
Identifier,统一资源标识符):由某个协议方案(协议类型名称,如http)表示的资源的定位标识符 URL(Uniform Resource Locator,统一资源定位符):简单理解URL就是Web网页地址 RFC2396
任意此类实体均以与RFC2396[URI]一致的格式来唯一设定地址。由于历史原因,XMPP实体的地址称作Jabber标识符或JID。
URI 是 Uniform Resource Identifier 的缩写,RFC2396 分别对三个单词做了定义。
且长度或元素个数必须大于0 @Valid 具体作用下面会列举 Hibernate Validator 附加的 constraint 注解 详细信息 @Length 被注释的字符串的大小必须在指定的范围内 @URL 根据RFC2396
且长度或元素个数必须大于0 @Valid 具体作用下面会列举 Hibernate Validator 附加的 constraint 注解 详细信息 @Length 被注释的字符串的大小必须在指定的范围内 @URL 根据RFC2396
且长度或元素个数必须大于0 @Valid 具体作用下面会列举 Hibernate Validator 附加的 constraint 注解 详细信息 @Length 被注释的字符串的大小必须在指定的范围内 @URL 根据RFC2396
且长度或元素个数必须大于0 @Valid 具体作用下面会列举 Hibernate Validator 附加的 constraint 注解 详细信息 @Length 被注释的字符串的大小必须在指定的范围内 @URL 根据RFC2396
RFC2396(RFC,Request for Comments,征求修正意见书,一些指定HTTP协议技术标准的文档)分别对这三个单词进行了如下定义: Uniform:规定统一的格式可方便处理多种不同类型的资源
URI: 其实这里包含三个组件,URI全称 是 Uniform Resource Identifier,RFC2396在规范的1.1分别对于这三个单词进行下面的定义,整体来看URI 就是由某个协议方案表示的资源的定位标识符
很难验证一个URL是否合法的原因在于: 1.在 RFC2396/RFC3986 中进行了说明,但是也仅仅是说明。
Parameter Contamination) 这一概念见于exploit-db上的paper:Beyond SQLi: Obfuscate and Bypass,Contamination同样意为污染 RFC2396
具体参见“RFC2396: Uniform Resource Identifiers (URI): Generic Syntax”。 当请求参数包含中文字符时,应对中文字符采用UTF-8编码。
RFC2396分别对这3个单词进行了如下定义。 Uniform 规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式。