URL 내에 at 기호 (@)를 사용할 수 있습니까?


90

@사용자의 일부로 기호 를 사용하는 것이 안전 합니까? 예를 들어 가능한 URL은입니다 http://example.com/@dave.

요즘에는 사용자를 일반적으로 "@user"라고 부르는데 사용자 페이지를 "@username"으로 만들지 않겠습니까?


2
"사용자는 일반적으로 @user라고합니다."-WAT? 하지만 예, URL에 @를 사용할 수 있습니다.
Lennart Regebro

1
URL이 제대로 인코딩되지 않으면 @를 URL에 사용하는 데 아무런 문제가 없다고 생각합니다.
Praveen

4
@ user1671639 : "URL이 올바르게 인코딩 된 경우"라는 뜻이라고 생각합니다.
Lennart Regebro 2013 년

3
그냥 주목 구글은 이제 URL을에 @를 사용하는 매핑 : google.com/maps/@0,0,2z
Zv_oDD

답변:


126

퍼센트 인코딩 된 …

당신은 사용할 수 있습니다 @당신이 경우 HTTP URI 경로에 문자를 퍼센트 인코딩 으로 %40.

많은 브라우저에서 여전히으로 표시 @하지만 예를 들어 URI를 텍스트 문서에 복사하여 붙여 넣으면 %40.

… 또한 직접

백분율 인코딩 대신 @HTTP URI 경로에서 직접 사용할 수 있습니다 .

URI 의 경로 는 구문을 참조하십시오 . 다양한 무관 절 제쳐두고 경로는 문자로 구성 될 수있다 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

다음은 Wikipedia 페이지의 예입니다.

  • 링크
  • 복사 및 붙여 넣기: http://en.wikipedia.org/wiki/%22@%22_%28album%29

당신이 볼 수 있듯이, ", (, 및 )문자는 퍼센트 인코딩,하지만 @과는 _직접적으로 사용된다.


좋은 소식! 그런데 왜 트위터는 이것을하지 않습니까?
Augustin Riedinger 2015 년

1
@AugustinRiedinger : 예제 URL을 제공해 주시겠습니까? 나는 Twitter를 사용하지 않으며 @URL에서 더 이상 사용하지 않는 것으로 보이지만 이전 (?) 프로필 URL은 여전히 ​​작동합니다. 퍼센트 인코딩 된 @(작동하지 않음 !) 예제@직접 사용 (작동 함) 일!) .
unor

흥미 롭군요! 실제로 @트위터의 경우 유무 에 관계없이 작동합니다 . 그들의 내부 링크없이 URL을 참조 할 @생각 : twitter.com/@stackexchange
아우구스틴 Riedinger

1
@RalphCallaway는 : AFAIK 에만 예약되지 않은 문자는 퍼센트 인코딩 된 형태로 동일 하지만이 @아닌 자유석 . 소비자는 가정하지 않아야 그래서 %40@동일합니다.
unor

1
Many browsers would display it still as @, but e.g. when you copy-and-paste the URI into a text document, it will be %40.Chrome에서는 그렇지 않습니다.
Defozo 2012-07-23

43

URL에 @-기호를 사용할 수 있습니까? - 예, 할 수 있습니다!

@ 문자, 16 진수 값 40, 10 진수 값 64는 URI 용으로 예약 된 문자입니다. mailto:예를 들어 URI의 이메일 주소와 같은 용도로 사용됩니다.mailto:username@somewhere.foo 사용자 이름 및 비밀번호 정보를 전달하는 데 사용됩니다 (나쁜 생각이지만 가능합니다).http://username:password@somewhere.foo

경로에 @-기호가있는 URL을 원하는 경우 ""로 인코딩해야합니다. URL 인코딩 " 으로 인코딩해야 합니다. 예를 들면 다음과 같습니다.http://somewhere.foo/profile/username%40somewhere.foo

모든 최신 브라우저는 이것을 다음과 같이 표시합니다. http://somewhere.foo/profile/username@somewhere.foo 하고 @ -sign에 입력 한 모든 것을 다음으로 변환합니다.%40 하므로 사용하기 쉽습니다.

많은 웹 프레임 워크는 또한 자동으로 또는 도우미 기능을 사용하여 URL 인코딩 된 URL로 또는 URL로 변환하는 데 도움을줍니다.

요약하자면 : 예, URL에 @ -symbol 을 사용할 수 있지만 @ -character를 사용할 수 없으므로 인코딩되었는지 확인해야합니다 .


+1 완벽합니다. 이론을 전달하는 대신 시도해 보는 것이 좋습니다. 이것이 제가 의미하는 바입니다. 좋은 답변으로 만들어 주셔서 감사합니다.
Praveen

4
인코딩이 나쁜 조언은 아니지만 @문자는 URL의 경로 부분에 인코딩 할 필요가 없습니다 ( greenbytes.de/tech/webdav/rfc3986.html#path )
brianreavis

11

에서 RFC 다음 문자는 :

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

예약되어 있으며 :

예약 된 문자의 목적은 URI 내의 다른 데이터와 구분할 수있는 구분 문자 집합을 제공하는 것입니다.

따라서 인코딩없이 이러한 문자를 사용하지 않는 것이 좋습니다.


-3

기본적으로 아니.

@ 예약 된 문자이며 의도 된 용도로만 사용해야합니다.

참조 : http://perishablepress.com/stop-using-unsafe-characters-in-urls/ http://www.ietf.org/rfc/rfc3986.txt

인코딩으로 사용할 수 있지만 그게 당신이 요청한 것이라고 생각하지 않습니다.

분명히 최신 브라우저가이를 처리 할 것입니다. 그러나 이것이 안전한지 물었고 RFC 의 사양에 따라 의도 된 목적을위한 것이 아니라면 사용해서는 안됩니다 (인코딩되지 않음).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.