我可以在网址中使用at符号(@)吗?

时间:2013-10-22 04:32:56

标签: http url character

使用@符号作为用户的一部分是否安全?例如,可能的网址为http://example.com/@dave

现在的想法是,用户通常被称为“@user”,那么为什么不将用户页面设为“@username”?

4 个答案:

答案 0 :(得分:112)

百分比编码......

如果percent-encode@,您可以在HTTP URI路径中使用%40字符。

许多浏览器仍将其显示为@,但例如将URI复制并粘贴到文本文档中时,它将为%40

......但也直接

您可以直接在HTTP URI路径中使用@,而不是对其进行百分比编码。

请参阅URI的path的语法。除了各种不相关的条款外,路径可能包含segmentsegment-nzsegment-nz-nc集中的字符。 segmentsegment-nzpchar集合中的字符组成,其定义为:

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

如您所见,@已明确列出。

segment-nz-nc集还明确列出了@字符:

segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )

因此,像这样的HTTP URI是完全有效的:

http://example.com/@dave

实施例

以下是维基百科页面的示例:

  • link
  • 复制并粘贴:http://en.wikipedia.org/wiki/%22@%22_%28album%29

如您所见,"()字符是百分比编码的,但@_直接使用

答案 1 :(得分:37)

你能在网址中使用@ -symbol吗? - 是的,你可以!

请注意,@ -character,十六进制值40,十进制值64,是URI的保留字符。它的用法是用于mailto: URI中的电子邮件地址,例如mailto:username@somewhere.foo,以及用于传递URI上的用户名和密码信息(这是一个坏主意,但可能):http://username:password@somewhere.foo

如果您想要在路径中包含@ -symbol的URL,则需要对其进行编码,并使用所谓的“URL-encoding”。例如:http://somewhere.foo/profile/username%40somewhere.foo

所有现代浏览器都会将其显示为http://somewhere.foo/profile/username@somewhere.foo,并将@ -sign中输入的任何内容转换为%40,因此很容易使用。

许多网络框架也可以自动或使用帮助函数来帮助您转换为URL编码的URL。

因此,总结:是的,您可以在网址中使用 @ - symbol ,但您必须确保它已编码,因为您无法使用 @ - 字符

答案 2 :(得分:10)

RFC以下字符:

  

! *'(); :@& = + $,/? %#[]

保留并且:

  

保留字符的目的是提供一组分隔符   与URI中的其他数据可区分的字符。

因此不建议在没有编码的情况下使用这些字符。

答案 3 :(得分:-5)

基本没有。

@是保留字符,只能用于其预期目的。

请参阅:http://perishablepress.com/stop-using-unsafe-characters-in-urls/http://www.ietf.org/rfc/rfc3986.txt

它可以用于编码,但我不认为这就是你所要求的。

显然现代浏览器会处理这个问题。但是你问这是否安全并且根据RFC的规范你不应该使用它(未编码),除非它是为了它的预期目的。