@
将符号用作用户的一部分是否安全?例如,可能的 URL 是http://example.com/@dave
.
这个想法是,现在用户通常被称为“@user”,那么为什么不将用户页面设为“@username”呢?
如果将其百分比编码为.,则可以@
在 HTTP URI 路径中使用该字符。%40
许多浏览器仍会将其显示为@
,但例如,当您将 URI 复制并粘贴到文本文档中时,它将是%40
.
您可以@
直接在 HTTP URI 路径中使用,而不是对其进行百分比编码。
请参阅URI路径的语法。除了各种不相关的子句之外,路径可能由 、 或 set 中的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
如您所见,"
、(
和)
字符是百分比编码的,但@
和_
是直接使用的。
您可以在 URL 中使用@符号吗?-是的,你可以!
请注意,@-character,十六进制值 40,十进制值 64,是 URI 的保留字符。它的用途是用于 URI 中的电子邮件地址之类的东西mailto:
,例如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。
因此,总而言之:是的,您可以在 URL 中使用@-symbol,但您必须确保它已编码,因为您不能使用@-character。
在RFC中包含以下字符:
* ' ( ) ; : @ & = + $ , / ? % # [ ]
被保留并且:
保留字符的目的是提供一组可与 URI 中的其他数据区分开来的定界字符。
所以不建议使用这些不编码的字符。
基本上没有。
@
是一个保留字符,只能用于其预期目的。
请参阅: http: //perishablepress.com/stop-using-unsafe-characters-in-urls/和http://www.ietf.org/rfc/rfc3986.txt
它可以用于编码,但我认为这不是你要问的。
显然现代浏览器会处理这个问题。但是,您询问这是否安全,并且根据RFC的规范,您不应该使用它(未编码),除非它用于其预期目的。