IT박스

URL에 공백이 있습니까?

itboxs 2020. 12. 1. 07:48
반응형

URL에 공백이 있습니까?


이 질문에 이미 답변이 있습니다.

w3fools 는 URL에 공백이 포함될 수 있다고 주장합니다. http://w3fools.com/#html_urlencode

이것이 사실입니까? URL이 인코딩되지 않은 공간을 어떻게 포함 할 수 있습니까?

HTTP 요청요청 줄은 공백을 구분 기호로 사용하며 다음과 같이 형식이 지정됩니다 {the method}{space}{the path}{space}{the protocol}.

GET /index.html http/1.1

그렇다면 어떻게 URL에 공백이 포함될 수 있습니까? 가능하다면 공백을 대체하는 관행은 +어디에서 왔습니까?


URL에는 리터럴 공백이 없어야합니다. 이것은 어느하여 부호화해야 퍼센트 인코딩 용도에 있는지 또는 다른 인코딩을 URL 안전 문자 (같은 애플리케이션 / x-www-form-urlencoded로 그 용도 +가 아닌 %20공간에 대한).

그러나 진술이 옳고 그른지는 해석에 따라 다릅니다. 구문 적으로 URI는 리터럴 공백을 포함하지 않아야하며 인코딩되어야합니다. 의미 상 a %20는 공간이 아니지만 (분명히) 공간을 나타냅니다 .


그들은 참으로 바보입니다. RFC 3986 Appendix A 를 보면 URL 정의 문법에서 "공백"이 언급되지 않는다는 것을 알 수 있습니다. 문법에서 언급되지 않았기 때문에 공백을 인코딩하는 유일한 방법은 백분율 인코딩 ( %20)입니다.

실제로 RFC는 공백이 구분 기호이므로 무시해야한다고 명시합니다.

경우에 따라 추가 공백 (공백, 줄 바꿈, 탭 등)을 추가하여 줄에서 긴 URI를 분리해야 할 수 있습니다. URI를 추출 할 때 공백을 무시해야합니다.

견고성을 위해 사용자 입력 URI를 허용하는 소프트웨어는 구분 기호와 포함 된 공백을 모두 인식하고 제거해야합니다.

흥미롭게도 +공간에 대한 인코딩으로를 사용 하는 것은 RFC에서 언급되지 않지만 하위 구분자로 예약되어 있습니다. 나는 그것의 사용이 단지 관례이거나 다른 RFC (아마도 HTTP)에 의해 다루어 진다고 생각합니다.


공백은 다음과 같이 "% 20"으로 대체됩니다.

http://www.example.com/my%20beautiful%20page


정보가 부분적으로 정확하다고 생각합니다.

그건 사실이 아니야. URL은 공백을 사용할 수 있습니다. 공백이 + 기호로 대체된다는 것을 정의하는 것은 없습니다.

언급했듯이 URL은 공백을 사용할 수 없습니다. HTTP 요청이 망가질 것입니다. 표준 +이지만 어디에 정의되어 있는지 잘 모르겠습니다 %20.

참고 URL : https://stackoverflow.com/questions/5442658/spaces-in-urls

반응형