봄 "URL이 정상화되지 않아 요청이 거부되었습니다."어떤 URL이 사용되었는지 어떻게 알 수 있습니까?
생산 과정에서 많은 오류가 발생하고 있습니다.
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized.
아마도 이것은 다음과 같은 이유로 발생합니다.//
URL에는 있지만 어디서 온 건지 전혀 모르겠어요어떤 URL이 원인인지 어떻게 알 수 있습니까?무슨 일이 일어나고 있는지 모를 때는 고치기가 어렵습니다.
관련 질문이 있다는 것은 알고 있지만, 문제 URL을 진단하는 방법은 다루지 않습니다.엄격한 방화벽을 해제하는 방법만 설명합니다.
HttpFirewall
처음에 요청을 확인할 것입니다.FilterChainProxy
의 필터를 호출하기 전에도SecurityFilterChain
그래서 당신의 최선의 방법은 설정하는 것입니다.Filter
앞에 놓인 것FilterChainProxy
그리고 이것Filter
을 잡는데 사용됩니다.RequestRejectedException
세부 정보를 기록합니다.
이 예외를 탐지하는 필터 구현:
public class LogFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
try {
chain.doFilter(request, response);
} catch (Exception e) {
if( e instanceof RequestRejectedException ) {
logger.info("Catch RequestRejectedException....");
logger.info((HttpServletRequest)request).getRequestURI()); //log the request detail such as its URI
}
throw e;
}
}
}
필터 구성 및 등록
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new LogFilter());
registration.addUrlPatterns("/*");
registration.setOrder(RegistrationBean.HIGHEST_PRECEDENCE); //Must has higher precedence than FilterChainProxy
return registration;
}
이 글을 댓글로 올리지 못해 죄송합니다만, 저는 아직 그렇게 할 수 없습니다.
다른 로깅 수준과 파일 로깅을 시도해 보셨습니까?지금 집에 없지만 다음 대사를 시도해 보십시오.
logging.level.=ERROR
logging.file=/home/spring.log
로깅 수준으로 DEBUG도 시도해 볼 수 있습니다.
다른 이유는 (조금 촌스럽지만) 모든 것을 교체하려고 노력하는 것입니다.//
와 함께/
세 번째 옵션으로 이 스크립트를 찾았습니다. 작동시킬 수 있습니다.
@ExceptionHandler(RequestRejectedException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleRequestRejectedException(final HttpServletRequest request, final RequestRejectedException ex)
{
if (LOGGER.isLoggable(Level.INFO))
{
LOGGER.log(Level.INFO, "Request Rejected", ex);
}
LOGGER.log(Level.WARNING, "Rejected request for [" + request.getRequestURL().toString() + "]. Reason: " + ex.getMessage());
return "errorPage";
}
행운을 빌어요, 당신이 성공하지 못하면 내일 다시 오겠습니다.
문제는 Spring Security를 사용하도록 구성하고 컨트롤러 클래스에서 @CrossOrigin Annotation을 활성화했다는 것입니다. 아래는 방금 구성 방법에 추가한 내용입니다.
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// ...
http.cors(); //Only this
}
}
참고를 위해 여기를 확인할 수도 있습니다. https://www.baeldung.com/spring-cors
언급URL : https://stackoverflow.com/questions/54489645/spring-the-request-was-rejected-because-the-url-was-not-normalized-how-to-tel
'sourcecode' 카테고리의 다른 글
PySpark를 사용하여 CSV 파일 로드 (0) | 2023.08.11 |
---|---|
ASP를 수정하는 방법.NET 오류 "'nnn.aspx' 파일이 사전 컴파일되지 않았으므로 요청할 수 없습니다."? (0) | 2023.08.11 |
php에서 데이터베이스 데이터를 비교하는 방법 (0) | 2023.08.11 |
VBA: 추상 수업 같은 것이 있나요? (0) | 2023.08.11 |
공백이 있는 문자열을 PowerShell로 전달하려면 어떻게 해야 합니까? (0) | 2023.08.11 |