Почему мои «Access-Control-Allow-Credentials» больше не отправляются в ответ на предварительные вызовы (OPTIONS) в Spring Boot 2.0.x (2.0.1.RELEASE в моем случае)? Вот моя Глобальная Конфигурация CORS, которая отлично работает под Spring Boot 1.5.6:
@Configuration
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins(
"http://localhost:3000",..)
.allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD");
}
};
}}
Мои зависимости от pom (я занимаюсь собственной безопасностью и избегаю Spring Security):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Мой сервисный вызов к конечным точкам REST не проходит предварительную проверку:
Не удалось загрузить http://localhost:8080/api/v5/sec/auth: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: значение заголовка 'Access-Control-Allow-Credentials' в ответе равно '', которое должно быть 'true' когда режим учетных данных запроса «включить». Источник 'http://localhost:3000' поэтому не имеет доступа.
Я проверил, что заголовок «Access-Control-Allow-Credentials» действительно присутствует в случае Spring Boot 1.5.6 и отсутствует в Spring Boot 2.0.1.
Вся документация, которую я могу найти, включая последнюю версию по адресу spring.io здесь , говорит, что моя глобальная конфигурация по-прежнему верна, хотя WebMvcConfigurerAdapter кажется устаревшим.
UPDATE:
Вот заголовки ответа до и после миграции:
Перед миграцией (Spring Boot 1.5.6):
Access-Control-Allow-Credentials: true
Контроль доступа-Разрешить происхождение: http://localhost:3000
Тип содержимого: application / json; charset = UTF-8
Дата: день, дд пн гггг чч: мм: сс GMT
Передача-кодировка: чанки
Варь: Происхождение
После миграции (Spring Boot 2.0.1 - отсутствует заголовок Access-Control-Allow-Credentials, но другие изменены / добавлены):
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Methods: GET, HEAD, POST <- Мои указанные методы игнорируются </strong>
Access-Control-Allow-Origin: * <- Мой указанный источник игнорируется </strong>
Access-Control-Max-Age: 1800
Длина контента: 0
Дата: день, дд пн гггг чч: мм: сс GMT
Варь: Происхождение
Варьируется: Access-Control-Request-Method
Варьируется: Access-Control-Request-Headers