我可以在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的规范,你不应该使用它(未编码),除非它是为了它的预期目的。