У меня возникают проблемы с поддержкой CORS для реализации Spring Rest. Странно то, что я могу успешно войти в систему с помощью Rest API, но после входа в систему получаю исключение как-
Ответ на предварительный запрос не проходит проверку управления доступом: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, доступ к источнику 'http://localhost:8100' запрещен. В ответе был код состояния HTTP 401.
Фрагмент кода, который я использую, выглядит следующим образом:
Класс конфигурации -
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new CorsInterceptor());
}
};
}
Класс CorsInterceptor -
public class CorsInterceptor extends HandlerInterceptorAdapter {
public static final String CREDENTIALS_NAME = "Access-Control-Allow-Credentials";
public static final String ORIGIN_NAME = "Access-Control-Allow-Origin";
public static final String METHODS_NAME = "Access-Control-Allow-Methods";
public static final String HEADERS_NAME = "Access-Control-Allow-Headers";
public static final String MAX_AGE_NAME = "Access-Control-Max-Age";
static final String ORIGIN = "Origin";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String origin = request.getHeader(ORIGIN);
response.addHeader(ORIGIN_NAME, origin);
response.setHeader(CREDENTIALS_NAME, "true");
response.setHeader(METHODS_NAME, "GET, POST, PUT, OPTIONS, DELETE");
response.setHeader(HEADERS_NAME,
"Authorization, Accept-Encoding,Cache-Control, Connection, Content-Length, Cookie,Host, If-Modified-Since, Pragma, User-Agent,Content-Type");
response.setHeader(MAX_AGE_NAME, "3600");
if (request.getMethod().equals("OPTIONS")) {
response.setStatus(HttpServletResponse.SC_ACCEPTED);
}
return true;
}
Здесь я могу успешно войти в систему (сначала предварительный запрос, затем фактический запрос, оба работают нормально). После этого я вызываю POST-запрос (вызывается первый предварительный запрос), но он дает мне исключения:
Ответ на предварительный запрос не проходит проверку управления доступом: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, доступ к источнику 'http://localhost:8100' запрещен. В ответе был код состояния HTTP 401.
Я пробовал использовать CorsConfiguration, а также CorsRegistry как -
registry.addMapping("/**").allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("")
.allowCredentials(true).maxAge(3600);
Но не повезло.
Дайте мне знать, если я что-то пропустил здесь.
Спасибо.