使用基本身份验证制作网址时:
https://username:password@someurl.com/some/api/path
如果username
或password
包含#
哈希符号,是有效还是无效? Hash通常位于网址末尾,因此我不确定它是否是在用户名和/或密码中使用的有效字符。
我无法从w3c url规范中说出...它说username
和password
应该是alphanum2
,我无法弄清楚是什么这完全意味着。
http://www.w3.org/Addressing/URL/url-spec.txt
我们现在更经常地鼓励我们仔细挑选更复杂的密码,包括#
哈希等特殊字符。
答案 0 :(得分:3)
(警告:请注意,RFC 7230 disallows要在HTTP / HTTPS URI中使用userinfo
子组件;对于所有URI,通常格式username:password
为{ {3}}。)
HTTPS URI方案是deprecated,它引用了{39}来定义defined in RFC 7230。
authority
组件可以包含authority
component,其语法定义为:
userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
在userinfo
subcomponent中,您可以查找这些部分的定义方式。总而言之,这些是允许的字符:
a
- z
,A
- Z
0
- 9
-
.
_
~
!
$
&
'
(
)
*
+
,
;
=
:
因此,您可能无法直接在#
子组件中使用userinfo
,但您可以使用其百分比编码形式(%23
),例如foo#bar
:
https://foo%23bar@example.com/some/api/path
答案 1 :(得分:1)
它进一步定义了几行:
alphanum2 alpha | digit | - | _ | . | +
所以,答案显然是不。
我们现在更经常地鼓励我们仔细挑选更复杂的密码,包括#hashes等特殊字符。
是的,当然您可以将它们用于HTTP Basic Auth,但是您无法通过URL登录