2013-03-25 2 views
1

나는 PHP의 http_build_query()을 알고있다. 쿼리 문자열에 백 슬래시 문자를 url-encode한다. 또한 백 슬래시는 예약 된 문자이므로이 함수에 대해 원하는 동작을 수행한다는 것을 알고 있습니다. 나는 프로그래머들이 unencoded backslash를 쿼리 문자열에 사용하면서 존중하는 사람들을 보았고, 내 URL이 조금 더 멋지게 보이도록하기 위해 동일한 작업을하고 싶어했다. 내 백 슬래시를 URL 인코딩하는 것을 삼가 할 때 어떤 나쁜 점이 있습니까?쿼리 호출에서 백 슬래시를 url-encode하지 않으면 어떤 나쁜 일이 발생합니까?

URL 인코딩 규칙 위반에 대해 생각하기 시작한 이유는 google이 쿼리 문자열에 plusses를 사용한다는 사실입니다. 아무도 그 일을 위해 어떤 일이 일어날 지 알고 있습니까?

궁극적으로 해결하려고하는 문제는 두 개 이상의 쿼리 변수를 설정하지 않고도 인간이 읽을 수있는 안전 문자로 내 ?q=MVC 호출을 구분하는 것입니다.

+0

'+'를 사용하는 것은 쿼리 문자열에서 단어 목록을 보내는 매우 일반적인 방법입니다. 나는 RFC 1738을 인용 할 것이다 : * 스킴 이름은 일련의 문자들로 구성된다. 소문자 "a"- "z", 숫자 및 문자 더하기 ("+"), 마침표 (".") 및 하이픈 ("-")은 허용됩니다. * – Tchoupi

+0

실제로 백 슬래시 \\) 슬래시 (/)가 아닌가? – unor

+0

@unor 당신이 맞을 것 같아요, 아마 슬래시를 사용하고 있었을 것입니다 ... – DudeOnRock

답변

1

RFC 이것에 대해 매우 분명하다

쿼리 = * ("?"를 PChar/"/"/)

문자는 슬래시 ("/") 및 물음표 ("?")는 쿼리 구성 요소 내에 데이터 을 나타낼 수 있습니다. 그래서 당신이 "나이"다시했다 구현을 처리해야하지 않는 한 (쿼리 부분에 슬래시를 사용하는 것이 괜찮습니다 ... 일부 이전, 잘못된 구현이 제대로 이러한 데이터를 처리 할 수 ​​

을 조심 2005).

+0

그 부분을 읽었습니다. 내가 궁금해하는 것은 다음과 같습니다. 백 슬래시를 인코딩하지 않기 때문에 작동하지 않으면 어떻게 될까요? – DudeOnRock

+0

@DudeOnRock : 업데이트 참조) – georg

+0

멋지다. 감사합니다. – DudeOnRock