w3fools声称网址可以包含空格:http://w3fools.com/#html_urlencode
这是真的吗? URL如何包含未编码的空格?
我认为request line of an HTTP Request使用空格作为分隔符,格式为{the method}{space}{the path}{space}{the protocol}
:
GET /index.html http/1.1
因此URL如何包含空格?如果可以的话,用+
替换空格的做法来自哪里?
答案 0 :(得分:86)
网址不得包含文字空间。它必须使用percent-encoding或使用URL-safe characters的其他编码进行编码(例如application/x-www-form-urlencoded使用+
代替%20
代码。
但是语句是对还是错取决于解释:从语法上讲,URI不能包含文字空间,必须对其进行编码;在语义上,%20
不是空格(显然),但表示空格。
答案 1 :(得分:16)
%20
)。
事实上,RFC甚至声明空格是分隔符,应该被忽略:
在某些情况下,额外的空格(空格,换行符,制表符等)可能会 必须添加以跨行打破长URI。空白 提取URI时应该忽略。
和
为了稳健,接受用户类型URI的软件应该尝试 识别并删除分隔符和嵌入的空格。
奇怪的是,RFC中没有提到使用+
作为空间编码,尽管它被保留为子分隔符。我怀疑它的使用是公约还是由不同的RFC(可能是HTTP)覆盖。
答案 2 :(得分:3)
空格简单地被“%20”替换为:
答案 3 :(得分:1)
我认为这些信息部分正确:
那不是真的。 URL可以使用空格。没有定义空格被+号替换。
如您所述,网址不能使用空格。 HTTP请求会被搞砸。虽然+
是标准的,但我不确定%20
的定义位置。