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

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

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



답변

퍼센트 인코딩 된 …

당신은 사용할 수 있습니다 @당신이 경우 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

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


답변

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를 사용할 수 없으므로 인코딩되었는지 확인해야합니다 .


답변

에서 RFC 다음 문자는 :

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

예약되어 있으며 :

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

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


답변

기본적으로 아니.

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

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

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

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


답변