В моем проекте maven есть аннотированный веб-сервис Spring @RestController, и я хочу добавить в него функциональность CORS.Мне наполовину удалось сделать это, но я получаю результаты, которых я не ожидаю.
Симптомы состоят в том, что я отправляю сообщение в свою службу, например, с номером порта 1111, но явключите CORS на сервере с конфигурацией, которая, как я полагал, должна отклонять порты 1111, как, например, 2222 в конфигурацииМой сервер установлен на порт 3333.
Я использую 5.1.1 версии spring-web, spring-webmvc, spring-security-web, spring-security-config и spring-context, если это помогает сузитьэто вниз.
Вот очень простая служба;
@RestController
public class MyService implements IMyService {
IMyReqHandler requestHandler;
public MyService (IMyReqHandler requestHandler) {
this.requestHandler = requestHandler;
}
@PostMapping("/dothings")
public void DoThings(@RequestBody MyMessageType msg) {
requestHandler.processRequest(msg);
}
}
Моя текущая конфигурация выглядит следующим образом:
@EnableWebSecurity
public class CORSConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:2222"));
configuration.setAllowedMethods(Arrays.asList("POST"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/dothings", configuration);
return source;
}
}
Я подтвердил, что код запускается во время запуска.
Точные заголовки ответа:
HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: http://localhost:1111
Content-Length: 0
Date: Fri, 23 Nov 2018 12:48:06 GMT
Я ожидал, что 1111 в заголовках ответа будет 2222 из-за моей конфигурации.Почему это не так?Чего мне не хватает?
РЕДАКТИРОВАТЬ: Извиняюсь за то, что ввел в заблуждение, но оказывается, что я получаю эти заголовки из-за другого куска кода ... В методе службы у меня естьannotation;
@CrossOrigin(value = "http://localhost:1111")
Это объясняет 1111, но когда я удаляю эту строку, я вообще не добавляю связанные с CORS заголовки.Если я удаляю значение из него, я получаю заголовки CORS, но по умолчанию они «разрешают все», а это не то, что я хочу.
Я должен добавить, что я ВСЕХ не вижу заголовков, связанных с CORSкогда я удаляю эту оскорбительную строку кода.
Почему моя конфигурация не влияет на мои вызовы службы?Мне нужен способ динамически установить значение ...