반응형
GET 방식으로 URL 파라미터를 넘기다보면 특수문자 구분자를 사용해야할 때가 있다.
예를들면,, 자주 쓰이는건 | Vertical Bar (버티컬바)
하지만 특수문자를 사용하려고 하면 오류나 값이 잘 안넘어 갈 때가 있다.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
아주 예전엔 오류는 나지 않고 파라미터 값 전달이 제대로 되지 않았었는데 Tomcat 버전 업그레이드 이후 특수문자를 유효한 문자로 인정하지 않아 오류나 나타난다.
62273: Implement configuration options to work-around specification non-compliant user agents (including all the major browsers) that do not correctly %nn encode URI paths and query strings as required by RFC 7230 and RFC 3986. (markt)
해결방안1
웹 소스에서 URL을 넘길때 인코딩을 해준다
var param = encodeURIComponent(value);
var url = "../test.com?title=안녕하세요¶m="+param;
해결방안2
server.xml 파일 내 relaxedQueryChars 추가해 허용할 문자열을 명시한다.
<Connector
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
relaxedQueryChars="^{}[]|" />
해결방안3
특수문자를 허용하는 Tomcat 버전을 사용한다.
아파치의 버그 이슈를 보면 아래와 같은 톰캣 버전에 해당 사항이 적용되어있다.
- 9.0.8 이상 버전
- 8.5.x대의 톰캣은 8.5.31 이상 버전
- 8.0.x대의 톰캣은 8.0.52 이상 버전
- 7.0.x대의 톰캣은 7.0.87 이상 버전
따라서 위 버전들을 피하는 톰캣 버전을 사용하면 된다.
반응형
'개발 환경 및 오류' 카테고리의 다른 글
[Junit] WebApplicationContext is required (0) | 2023.04.18 |
---|---|
[SQL Server] sp_dboption을(를) 찾을 수 없습니다. (0) | 2023.04.06 |
[Chrome] 크롬 http -> https 강제 리다이렉트 해제하기 (3) | 2023.03.14 |
[젠킨스] 실패 - 컨텍스트 [{0}]이(가) server.xml에 정의되어 있어, 배치를 제거할 수 없습니다. (0) | 2023.03.13 |
chrome-error://chromewebdata/ (0) | 2023.02.23 |