[SPRING] 프리 플라이트에 대한 응답에 잘못된 HTTP 상태 코드 401이 있습니다.
SPRING프리 플라이트에 대한 응답에 잘못된 HTTP 상태 코드 401이 있습니다.
각자 모두. 저는 앵귤러 2와 스프링 프레임 워크에 익숙하지 않습니다. 난 권한 헤더 (기본 인증)와 간단한 요청을하려고합니다.
관련성이있는 Spring Boot (1.2.6.RELEASE)를 사용하고 있습니다. 내 CORS 구성은 다음과 같습니다.
@Component
public class SimpleCorsFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(SimpleCorsFilter.class);
public SimpleCorsFilter() {
log.info("SimpleCORSFilter init");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me, authorization, x-auth-token");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
그리고 클라이언트 측에서 다음과 같이 보입니다.
this.headers.append('Authorization', 'Basic dXNlcjphZG1pbg==');
return this.http
.get(`http://localhost:8080/api/login?username=${username}`, {headers : this.headers} )
.map(response => response.json().data as any);
}
나는 계속 간다.
제발, 내가 무엇을 놓치고 있는지 모르겠다. 이미 많은 게시물을 확인했지만 거기에 갈 수 없었습니다 ...
해결법
-
==============================
1.http 메서드가 OPTIONS 인 경우 필터링 및 상태 200 설정 안 함
http 메서드가 OPTIONS 인 경우 필터링 및 상태 200 설정 안 함
if("OPTIONS".equalsIgnoreCase(request.getMethod())) { response.setStatus(HttpServletResponse.SC_OK); } else { chain.doFilter(req, res); }
-
==============================
2.Spring Boot, Spring Security 및 고객이 2/4 분기와 비슷한 비슷한 상황에 빠지면 여기에 결과를 게시했습니다.
Spring Boot, Spring Security 및 고객이 2/4 분기와 비슷한 비슷한 상황에 빠지면 여기에 결과를 게시했습니다.
짧은 응답을 원하는 사람들은 두 가지를 구성해야합니다.
건배!!!
-
==============================
3.이것은 아주 늦을 수 있었다 그러나 이것은 응답을 찾아낸 장시간 후에 몇몇 그들 문제를, 해결할 수 있었다
이것은 아주 늦을 수 있었다 그러나 이것은 응답을 찾아낸 장시간 후에 몇몇 그들 문제를, 해결할 수 있었다
public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure( WebSecurity web ) throws Exception { web.ignoring().antMatchers( HttpMethod.OPTIONS, "/**" ); } }
https://stackoverflow.com/a/45830981/3724760을 참조하십시오.
-
==============================
4.봄 보안 가이드와 같은 또 다른 옵션 :
봄 보안 가이드와 같은 또 다른 옵션 :
WebSecurityConfigurerAdapter를 확장하는 보안 구성 클래스에서 cors () 구성
protected void configure(HttpSecurity http) throws Exception { http .cors().and().**this will use corsConfigurationSource by** default. so lets define corsConfigurationSource // other criteria } **so lets define corsConfigurationSource** @Bean CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOrigins(Arrays.asList("http://myufrontend.com")); configuration.setAllowedMethods(Arrays.asList("GET", "POST")); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); }
from https://stackoverflow.com/questions/40370022/response-for-preflight-has-invalid-http-status-code-401-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @BeanParam과 유사한 HTTP GET 요청 매개 변수로의 Spring MVC 빈 매핑 (0) | 2018.12.26 |
---|---|
[SPRING] 프로세스 봄 부팅 외부화 된 속성 값 (0) | 2018.12.26 |
[SPRING] HibernateException : 현재 스레드에 대해 트랜잭션 동기화 세션을 가져올 수 없습니다. (0) | 2018.12.26 |
[SPRING] java.lang.IllegalStateException : 사용할 수있는 트랜잭션 가능한 EntityManager가 없습니다. (0) | 2018.12.26 |
[SPRING] java.lang.NoSuchMethodError : 자바 스크립트 숨겨진 기능은 무엇입니까? (0) | 2018.12.26 |