我可以在URL中使用符号(@)吗?
使用@符号作为用户的一部分是否安全? 例如,可能的URL是http://example.com/@dave 。
现在的想法是,用户通常被称为“@user”,那么为什么不把用户页面设为“@username”呢?
百分比编码…
如果将其编码为%40则可以在HTTP URIpath中使用@字符。
许多浏览器仍然将其显示为@ ,但是例如,当您将URI复制并粘贴到文本文档中时,它将是%40 。
…也是直接的
而不是百分比编码,你可以直接在HTTP URIpath中使用@ 。
查看URI path的语法。 除了各种不相关的子句外,path可能由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
例
这是一个维基百科页面的例子:
- 链接
- 复制粘贴:
http://en.wikipedia.org/wiki/%22@%22_%28album%29:http://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的规范,你不应该使用它(未编码),除非它是为了它的预期目的。