2012-11-13 1 views
1

은 위키 백과에 따르면, URI는URI의 <계층 부분>에 공백이 허용됩니까?

<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ] 

내가 전달하는 시도로 정의된다 : Uri.IsWellFormedUriString에 "HTTP // 일부 사이트/페이지"그것은 false를 반환합니다. 그런 다음 "http : // some % 20site/page"시도하고 공백을 인코딩했습니다. 그리고 여전히 거짓이 있습니다.

그러나 "http : // somesite/page % 20Zero"는 나에게 사실을 줄 것입니다.

URI의 "루트 수준"에 결론을 그릴 수 있습니까? 공간은 허용되지 않습니까? 아니면 내가 놓친 다른 것이있다.

+0

위키 피 디아는 자신의 Uri 검증을 구현하거나 정확한 세부 정보를 원할 경우 읽어야 할 완전한 사양 [RFC 3986] (http://www.ietf.org/rfc/rfc3986.txt)을 참조합니다. 허용되는 것과 허용되지 않는 것의 ... –

답변

2

URI 분해는 지나치게 단순화되었습니다. "계층 적 부분"은 authoritypath을 포함합니다. authority은 선택적 사용자 이름/암호, 호스트 이름 및 포트 세부 정보로 세분화됩니다.

http://some site/page URI의 호스트 이름 구성 요소에 "some site"가 있는데 유효하지 않습니다.

http://somesite/page zero URI는 "somesite"를 호스트 이름으로 사용하며 유효하며 경로 구성 요소로 "page zero"도 유효합니다.

1

URI에의 hierarchical 부분은 실제로 authoritypath 구성 요소 구성을 참조하십시오; 자세한 내용은 RFC 3986을 참조하십시오. 특히

, 당신은 path 구성 요소가 기본적으로 (무엇보다도) 될 수있는 pchars에서 %20은 예입니다있는 this section에 정의 된 "PCT 인코딩"문자를, 구성되어 있음을 볼 수 있습니다.

How to make this PHP URL parsing function nearly perfect?

는 RFC 3986에 대한 유효성을 검사하는 코드,하지만 몇 가지를 만든다 :


내가 관심이있을 수 있습니다 여기 URI 검증의 문제에 PHP 솔루션을 게시했습니다 예외.

+0

당신은 최근에 위조 된 텍스트를 포함하고있는 다음 wiki 편집을 승인했습니다 : http://stackoverflow.com/review/suggested-edits/1047273#./1047273?&_suid=1353421584593017052236174415713. 앞으로 태그 위키를 검토 할 때 좀 더주의하십시오. – LittleBobbyTables

관련 문제