将@
符号用作用户的一部分是否安全?例如,可能的网址为http://example.com/@dave
。
现在的想法是,用户通常被称为“ @user”,那么为什么不将用户页面设置为“ @username”呢?
将@
符号用作用户的一部分是否安全?例如,可能的网址为http://example.com/@dave
。
现在的想法是,用户通常被称为“ @user”,那么为什么不将用户页面设置为“ @username”呢?
Answers:
如果将@
字符百分比编码为,则可以在HTTP URI路径中使用该字符%40
。
许多浏览器会将其显示为@
,但是例如,当您将URI复制并粘贴到文本文档中时,它将为%40
。
您可以@
直接在HTTP URI路径中使用它,而不是对其进行百分比编码。
请参阅URI路径的语法。各种不相关的条款之外,该路径可以由在字符的segment
,segment-nz
或segment-nz-nc
组。segment
和segment-nz
由从字符pchar
集,其被定义为:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
如您所见,@
明确列出了。
该segment-nz-nc
集合还@
明确列出了该字符:
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
因此,这样的HTTP URI完全有效:
http://example.com/@dave
这是Wikipedia页面的示例:
http://en.wikipedia.org/wiki/%22@%22_%28album%29
正如你所看到的"
,(
和)
字符百分比编码,但@
与_
直接使用。
@
的网址了,但旧的配置文件的URL仍然有效(?):例如用百分比编码@
(也没有工作!)与使用例如@
直接(不工作!)。
Many browsers would display it still as @, but e.g. when you copy-and-paste the URI into a text document, it will be %40.
Chrome并非如此。
您可以在网址中使用@符号吗?-是的,可以!
请注意,@字符,十六进制值40,十进制值64,是URI的保留字符。它的用途是用于诸如mailto:
URI中的电子邮件地址之类的事情,mailto:username@somewhere.foo
以及用于在URI上传递用户名和密码信息(这是一个坏主意,但可能):http://username:password@somewhere.foo
如果您想要一个在路径中带有@符号的URL,则需要对其进行编码,即所谓的“ URL-encoding ”。例如这样:http://somewhere.foo/profile/username%40somewhere.foo
所有现代的浏览器都将其显示为http://somewhere.foo/profile/username@somewhere.foo,并将所有@ -sign输入转换为%40
,因此易于使用。
许多网络框架还可以自动或通过辅助功能来帮助您在URL编码的URL之间进行转换。
因此,总而言之:是的,您可以在URL中使用@符号,但是您必须确保已对其进行编码,因为您不能使用@字符。
@
字符不“需要”的网址(的路径部分进行编码greenbytes.de/tech/webdav/rfc3986.html#path)
基本上没有
@
是保留字符,只能用于其预期目的。
请参阅:http : //perishablepress.com/stop-using-unsafe-characters-in-urls/和http://www.ietf.org/rfc/rfc3986.txt
可以对它进行编码,但是我不认为这是您要的。
显然,现代的浏览器可以解决这个问题。但是,您问这是否安全,并且根据RFC的规范,除非出于预期目的,否则不应该使用它(未编码)。