문제
양식의 URL입니다 http://asdf.com/something.do?param1=true?param2=false 유효한?
나는 두 번째 생각이 없다고 생각합니까? 유효한 URL에서 허용되며 대신 앰퍼 샌드 (&)이어야하지만 HTTP 1.1 RFC에서는 아무것도 찾을 수 없습니다. 어떤 아이디어?
해결책
사용하는 것이 유효하지 않습니까? 다시. ? 매개 변수 목록의 시작을 표시해야합니다. & 매개 변수를 분리해야합니다.
에서 RFC 3986:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
에서 RFC 1738 :
HTTP URL이 양식을 취합니다.
http:// <host> : <port> / <path> ? <searchpart>
어디
<host>
그리고<port>
섹션 3.1에 설명되어 있습니다. 만약에:<port>
포트 기본값은 80으로 생략됩니다. 사용자 이름이나 비밀번호는 허용되지 않습니다.<path>
HTTP 선택기입니다<searchpart>
쿼리 문자열입니다. 그만큼<path>
선택 사항과 마찬가지로<searchpart>
그리고 그 이전 "?". 둘 다<path>
...도 아니다<searchpart>
존재하면 "/"도 생략 될 수 있습니다.내
<path>
그리고<searchpart>
구성 요소, "/", ";", "?" 예약되어 있습니다. "/"문자는 HTTP 내에서 계층 구조를 지정하는 데 사용될 수 있습니다.
다른 팁
두 번째와 세 번째 사용 및 사용
Application/x-www-form-urlencoded
이것은 기본 콘텐츠 유형입니다. 이 컨텐츠 유형으로 제출 된 양식은 다음과 같이 인코딩되어야합니다.
- 제어 이름과 값이 빠져 나옵니다. 공간 문자가 대체됩니다
+
, 그런 다음 예약 된 문자는 [rfc1738]에 설명 된대로 탈출됩니다. 섹션 2.2 : 비 알파 너매 문자는 다음으로 대체됩니다.%HH
, 캐릭터의 ASCII 코드를 나타내는 퍼센트 부호와 26 진수 숫자. 라인 브레이크는 "CR LF"쌍으로 표시됩니다 (즉,%0D%0A
).- 제어 이름/값은 문서에 표시된 순서로 나열됩니다. 이름은 값과 분리됩니다
=
이름/값 쌍은 서로 분리됩니다.&
.
언급했듯이 다시 사용하는 것은 유효하지 않습니다. 그러나 당신이 있다면? 캐릭터 매개 변수 값의 일부로서, 당신은 그것을 %63으로 인코딩 할 수 있습니다 ( %20으로 인코딩되는 공간 문자와 마찬가지로).