SpringBoot - HTTP 요청 헤더 구문 분석 오류
나는 달리고 있습니다SpringBoot Application
방금 서버 로그를 확인했는데 이런 오류가 몇 개 발생했습니다.매일 12/24시간 이후에 오류가 발생하여 무엇이 원인인지 이해할 수 없습니다.
실행 중인 Tomcat 버전8.5.11
2018-03-04 17:03:26 [http-nio-8080-exec-85] INFO o.a.coyote.http11.Http11Processor - 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 method name. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:421)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:667)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
HTTP 대신 HTTPS 헤더를 구문 분석하기 때문에 이 문제가 발생할 수 있습니다.시도:
- 추가:
logging.level.org.springframework.web: trace
logging.level.org.apache: trace
응용 프로그램.properties에 연결하고 Spring이 사용자에게 하는 말을 확인합니다. - SSL로 암호화된 다른 리소스를 참조하는 예약된 활동이 있는지 확인합니다.참고 항목: java.lang.잘못된 인수예외: 메서드 이름에 잘못된 문자가 있습니다. HTTP 메서드 이름은 토큰이어야 합니다.
제가 이 비슷한 질문에서 답변했듯이, 실수로 HTTP 프로토콜이 아닌 HTTPS 프로토콜로 요청하는 것이 아닌지 확인하십시오.Tomcat에서 SSL을 구성하지 않고 HTTPS 요청을 보내면 이 이상한 메시지가 표시됩니다.
Spring Boot 2(2.0.1)에서 이 오류가 발생했습니다.포트 8443에서 HTTPS를 서비스하고 포트 8080 HTTP 트래픽을 포트 8443으로 리디렉션하도록 구성된 RELEASE) 응용 프로그램입니다.
마이크로소프트 Edge에서 애플리케이션은 예상대로 작동했습니다.http://localhost:8080
로 리디렉션https://localhost:8443
그러나 Chrome 66에서는 이것이 한 번만 작동하고 Chrome은 "localhost가 잘못된 응답을 보냈다"고 불평합니다.ERR_SSL_PROTOCOL_ERROR
).
서버 로그에 다음이 표시되었습니다. DEBUG 11440 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer: Received [ <<unprintable characters>> ] INFO 11440 --- [nio-8080-exec-1] o.apache.coyote.http11.Http11Processor: Error parsing HTTP request header
Chrome이 추가한 것으로 밝혀졌습니다.localhost
Spring Boot이 다시 전송했기 때문에 HSTS 목록에Strict-Transport-Security: max-age=31536000 ; includeSubDomains
https://localhost:8443에 대한 헤더 백.따라서 기본적으로 이 문제는 클라이언트(즉, 브라우저)가 HTTP 엔드포인트에 HTTPS를 전달하려고 하기 때문에 발생했습니다.
추가.headers().httpStrictTransportSecurity().disable();
에<? extends WebSecurityConfigurerAdapter>.configure
이 스택 오버플로 질문에서 언급한 대로 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/49273847/springboot-error-parsing-http-request-header
'programing' 카테고리의 다른 글
한 열에서 고유한 열을 선택하고 다른 모든 열을 반환합니다. (0) | 2023.07.22 |
---|---|
함수 arg에 액세스하기 위해 x86 스택을 popping할 때의 세그먼트화 오류 (0) | 2023.07.22 |
스프링 컨트롤러와 끝점의 차이 (0) | 2023.07.22 |
변수를 int 대 round() 함수에 사용 (0) | 2023.07.22 |
변경된 값에 대해서만 트리거 (0) | 2023.07.22 |