본문 바로가기

IT/JAVA

Failed to load resource: the server responded with a status of 400 (Bad Request) 에러

반응형



jquery 에서 url을 넘길때 파라미터간 구분자로  " | " 를 사용 하고 있었다

기존에는 아무문제 없이 사용하다가 최근에 톰캣을 최신버전으로 재설치 하였더니 다음과 같은 오류가 생겼다.






java error 로그


Error parsing HTTP request header

 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:189)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1000)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)




chrome 콘솔 error 로그


Failed to load resource: the server responded with a status of 400 (Bad Request)




 

최신 버젼 톰캣에서 RFC7230, RFC3986 등 규약? 부분을 강화? 했다고 한다.

 

RFC3986 에서 아래 문자만 허용하고 있어서 " | " 사용시 오류가 발생했다.




RFC3986 권장 사용 문자 


ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=`.


 

자세한 내용은

RFC7230, RFC3986​ 관련 검색 


RFC3986​ 관련 참고 사이트

http://stackoverflow.com/questions/1547899/which-characters-make-a-url-invalid



해결방법

1. "|" 를 다른 권장하는 문자로 교체한다

2. 톰캣 버전을 다운 낮춘다.

3. 해당 값을 생성? 리턴?하는곳에 encodeURIComponent(파라미터값) 을 추가해서 리턴한다.(decode도 해줘야함)

4. POST 방식으로 넘긴다  -- 정확히모르겠음..


EX)

 

encodeURITest =  function() {

var parameter = "test|test1|test2|";

 return encodeURIComponent(parameter); 



정답이 아닐수도 있습니다...

잘못된 부분이 있으면 댓글 부탁드립니다.


728x90
반응형

'IT > JAVA' 카테고리의 다른 글

[JAVA] JAVA 시간차이구하기, 시간비교하기 after(), before()  (2) 2021.02.24
[JAVA]MD5 암호화 하기  (0) 2015.10.10