2016-06-16 5 views
0

는 좀 URL의 사이트 맵을 추가해야합니다. this answers 특수 문자에 명시된 바와 같이 이스케이프해야합니다. 문제는URL에 이스케이프 문자를 인코딩하는 방법은 무엇입니까?

http://somesite.com/search/some_mark/model////'''...\\\,,,!!!"""№№№;;;%%%:::???***((()))___++ 

그래서 내가 model에 대한 PARAM ///'''...\\\,,,!!!"""№№№;;;%%%:::???***((()))___++을 가지고있다.

내가 spring uri utilsencode 방법을 사용하여 탈출하려고 노력했습니다,이 출력입니다 :

http://somesite.com/search/some_mark/model/%2F%2F%2F%27%27%27...%5C%5C%5C%2C%2C%2C%21%21%21%22%22%22%E2%84%96%E2%84%96%E2%84%96%3B%3B%3B%25%25%25%3A%3A%3A%3F%3F%3F%2A%2A%2A%28%28%28%29%29%29___%2B%2B 

나는 이것이 법적 URL을 이해하지만 브라우저 표시 줄에 입력 할 때 내가 응답 코드를 얻고으로 400 Bad Request.

는 또한 출력 이하로, 자바의 URLEncoder.encode(..) 방법을 사용하여 인코딩하기 위해 시도했다 :

http://somesite.com/search/some_mark/model/%2F%2F%2F%27%27%27...%5C%5C%5C%2C%2C%2C%21%21%21%22%22%22%E2%84%96%E2%84%96%E2%84%96%3B%3B%3B%25%25%25%3A%3A%3A%3F%3F%3F***%28%28%28%29%29%29___%2B%2B 

당신이 별표 (***)를 탈출 아니에요시피.

그래서 난 정말 지금 혼란스러워하고 있습니다. Spring은 올바른 방법으로 코드를 작성합니까? 메소드의 출력을 유효한 URL로 간주해야합니까? 그렇다면 브라우저가 요청을하지 못하는 이유는 무엇입니까? 없다면,이 목적을 위해 어떤 유틸리티가 사용되어야합니까? 끝에

+0

URL의 끝에있는 두 개의 '+'가 올바른지 확인하십시오. 나는 이것이 일종의 시험이라고 가정하고 있지만, 다른 모든 문자들은 정확히 3 번 반복되고이 하나는 단지 두 번 반복되므로 문제가 될 수 있습니까? –

답변

0

나는 Spring URI Utils encode() 방법을 사용하고 슬래시에 대한 명시 적 검사를 추가 (모두 /\), 그래서 /model/ 이후의 부분을 포함하지 않을 것입니다. 부분으로 URL을 분할하고 인코딩 할 경우에도 소프트웨어의 많은 특별한 방법으로 그들과 함께 작동

기본적으로 슬래시가 예약되어 특수 문자. 예를 들어

당신은 당신이 추가 구성을 만들었하지 않는 한이 Http 400 상태 코드를 반환 할 수 있습니다 앱 앞의 nginx를 사용하는 경우.

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true 

또는 앱 스프링 MVC 프레임 워크에 그들과 또한 might have a problem을 구축 할 경우 :

는 URL로 인코딩 된 슬래시를 사용하는 옵션이 Tomcat을 사용하는 경우가있다.

은 기본적으로 구성 많이 필요합니다.

내 조언은이 특수 문자를 URL의 일부로 사용하기 전에 생각하는 것입니다.

관련 문제