[url] URL에 두 개 이상의 물음표가있는 것이 유효합니까?
오늘 다음 URL을 보았습니다.
http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497
쿼리 문자열의 시작 부분에 이중 물음표가 있습니다.
??blogid=122&entry_id=64497
내 브라우저에 문제가없는 것 같았고 빠른 북마크를 실행했습니다.
javascript:alert(document.location.search);
위에 표시된 쿼리 문자열을 제공했습니다.
유효한 URL입니까? 내가 그렇게 현명한 이유는 쿼리 매개 변수에 대해 이와 같은 URL을 구문 분석해야하고 이중 물음표를 지원하려면 코드를 약간 변경해야하기 때문입니다. 분명히 그들이 야생에 있다면 그들을 지원해야 할 것입니다. URL 표준을 정확히 준수하지 않은 것이 내 잘못인지 또는 실제로 비표준 URL인지 주로 궁금합니다.
답변
예, 유효합니다. URL 의 첫 번째 항목 만 ?
의미가 있으며 그 이후의 모든 항목은 리터럴 물음표로 처리됩니다.
쿼리 구성 요소는 첫 번째 물음표 ( “?”) 문자로 표시되고 숫자 기호 ( “#”) 문자 또는 URI 끝으로 종료됩니다.
…
문자 슬래시 ( “/”) 및 물음표 ( “?”)는 쿼리 구성 요소 내의 데이터를 나타낼 수 있습니다. 일부 오래되고 잘못된 구현은 계층 적 구분 기호를 찾을 때 경로 데이터와 쿼리 데이터를 구분하지 못하기 때문에 상대 참조 (섹션 5.1)의 기본 URI로 사용될 때 이러한 데이터를 올바르게 처리하지 못할 수 있습니다. 그러나 쿼리 구성 요소는 “키 = 값”쌍의 형태로 식별 정보를 전달하는 데 자주 사용되며 자주 사용되는 값 중 하나는 다른 URI에 대한 참조이므로 이러한 문자를 퍼센트 인코딩하지 않는 것이 유용 할 때가 있습니다.
답변
접선 적으로 관련된 답으로 foo?spam=1?&eggs=3
매개 변수 spam
에 값을 제공합니다.1?