URL에서 사용하기에 안전한 특수 문자는 무엇입니까?


13

URL에서 사용하기에 안전한 특수 문자는 무엇입니까?


2
URL에서 사용하기에 안전하지 않은 특수 문자를 묻는 것이 훨씬 빠르고 쉽습니다 (아래 Andreas Bonini의 답변에 따라).
마크 해턴

2
안전하지 않은 것을 묻는 것은 대답하기가 어렵습니다. ASCII 이외의 문자는 백분율로 인코딩해야합니다.
neo

2
@neo : 아니다. : O
Thomas Bonini

답변:


10

안전 문자는 az, AZ, 0-9 및 _-(밑줄 및 빼기)이며 매개 변수에 사용되는 예약 문자 외에 있습니다.

다른 캐릭터들은 어느 정도 문제를 일으킬 것입니다. 예 : 하나의 매개 변수가 배열 인 경우 ?param=array[content]즉, 인코딩 된 대괄호 url로 URL을 표시합니다.

그러나 문제는 추악한 것뿐만 아니라 안전한 문자 옆에 문자가있는 jpg가 있다고 말하면 브라우저에서 404를 다운로드 할 수없는 경우가 많습니다. 이는 구형 브라우저 및 일부 모바일 브라우저의 문제입니다.

이것을 테스트하는 방법?

  • 많은 방문자가있는 공개 페이지의 이름으로 테스트하려는 문자로 이미지 / JS / CSS를 많이 넣습니다.
  • 적중 할 때마다 404 페이지에서 이메일을 보내도록하십시오

내 요점을 증명하는 14000 개의 이메일이 포함 된받은 편지함이 있습니다.


5
글쎄, "안전한 캐릭터"대신에 "매우 안전한 캐릭터"라고 말할 것입니다. 스펙은 더 많은 것을 허용하지만 여기서는 보수적 인 것이 더 낫다는 것에 동의합니다.
Jeff Atwood

2
기간에 어떤 문제가 있습니까?
BlueWhale

11

다음 문자는 URL의 경로 구성 요소에서 특별한 의미를 갖습니다 (경로 구성 요소는 '?'앞의 모든 것).

  ";" | "/" | "?"

그 외에도 다음 문자는 URL의 쿼리 부분 ( '?'다음에 나오는 모든 문자)에서 특별한 의미를 갖습니다. 따라서 '?'뒤에 오는 경우 당신은 그들을 탈출해야합니다 :

  ":" | "@" | "&" | "=" | "+" | "$" | ","

보다 자세한 설명은 RFC를 참조하십시오 .


3
물론, 명확성을 위해이 답변은 질문의 반대입니다. 질문은 안전하지 않은 캐릭터가 아닌 안전한 캐릭터를 묻습니다. 원래 질문에 강력하게 대답하기가 어렵 기 때문에 다른 방법으로 질문하고이 답변과 일치하도록 질문을 편집해야합니다.
Mark Hatton

3

여기에 대한 답변은 좋지만 영어 이외의 문자는 언급 할 가치가 있다고 생각합니다. 이 SF 질문을 여기서 참조 하면 ñ와 같은 문자 (Español에서와 같이)는 DNS에서 올바르게 인코딩 된 경우 완벽하게 합법적입니다.

최신 브라우저 (español 항목은 ) 에서 확인할 수 있도록 DNS 내에서 Punycode 를 사용해야 xn--espaol-zwa하지만 영어가 아닌 사용자도 입력하기 쉬우므로 이제 도메인 이름으로 사용하기에 안전합니다. .

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