我可以在URL中使用符号(@)吗?

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

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

百分比编码…

如果将其编码为%40则可以在HTTP URIpath中使用@字符。

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

…也是直接的

而不是百分比编码,你可以直接在HTTP URIpath中使用@

查看URI path的语法。 除了各种不相关的子句外,path可能由segmentsegment-nzsegment-nz-nc集中的字符组成。 segmentsegment-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 

这是一个维基百科页面的例子:

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

正如你所看到的, "()字符是百分比编码的,但@_直接使用。

你可以在URL中使用@ -symbol吗? – 是的,你可以!

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

如果你想在一个path中有一个@符号的URL,你需要使用所谓的“ URL编码 ”对它进行编码 。 例如像这样: http://somewhere.foo/profile/username%40somewhere.foo : http://somewhere.foo/profile/username%40somewhere.foo

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

许多Web框架也可以帮助您自动或者通过帮助函数来转换为URL编码的URL。

所以,总结:是的,你可以在URL中使用@ -symbol ,但是你必须确保它被编码,因为你不能使用@ -character

在RFC中有以下字符:

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

保留和:

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

所以不build议在没有编码的情况下使用这些字符。

基本没有。

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

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

它可以使用编码,但我不认为这是你问。

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