Spring Boot Cors Проблема: все перепробовал, но POST не работает - PullRequest
0 голосов
/ 29 января 2019

У меня проблема с CORS при загрузке Spring.Запрос Get работает с использованием Java-конфигурации Spring для COR (используя WebMvcConfigurer).POST-запросы не работают.

Я пробовал не только конфигурацию Java, но и аннотации (@CrossOrigin ()) и фильтры (упорядочены в HIGHEST_PRECEDENCE).Аннотации никогда не работают для меня - даже для запроса на получение.

Мой фильтр CORS (скопированный и вставленный ответ 22kar): Spring Boot: CORS Issue

Мой WebMvcConfigurer:

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:3000");
            registry.addMapping("/greeting-posttest").allowedOrigins("http://localhost:3000");
//                .allowedHeaders("Access-Control-Request-Method", "Origin", "Access-Control-Request-Headers")
//                .allowedMethods("POST", "OPTIONS", "HEAD", "GET", "PATCH")
//                .exposedHeaders("Access-Control-Allow-Origin");
        }
    };
}

Мои cors, управляемые аннотациями:

//    @CrossOrigin(origins = "http://localhost:3000")
@PostMapping("/greeting-posttest")
public Greeting greetingPostTesting(@RequestBody String content) {
    System.out.println("==== in greeting post ====");
    Greeting newGreeting = new Greeting(counter.incrementAndGet(), content);
    return newGreeting;
}

JS, который делает запрос (из приложенияact-redux):

export function apiCall(method, path, data){
  return new Promise((resolve, reject)=>{
  return axios.post("http://localhost:8080/greeting-posttest",{content: "POSTING!"}, config).then(res=> {
      console.log("successful");
      console.log(res);
      return resolve(res.data)
  }).catch(err => {
      console.log("caught in apiCall")
      console.log(err);
      return reject(err.response);
  })
})
}

const config={
  headers: {
  'Origin': 'http://localhost:3000',
  // 'X-Requested-With': 'http://localhost:3000',
  'Access-Control-Request-Method' : 'POST, OPTIONS',
  'Access-Control-Request-Headers': 'access-control-allow-origin'
  }
}

РЕДАКТИРОВАТЬ: Ответ браузера Devtools:

Forbidden header name: Origin
Forbidden header name: Access-Control-Request-Method
Forbidden header name: Access-Control-Request-Headers

Ответ Axios:

Error:"Network Error"

Насколько мне известно об ответе Axios, ошибка сети возникает, когда Axios не может предложить код состояния ошибки..

====================

Мой бэкэнд: https://github.com/eeasuper/testing123

Мой веб-интерфейс: https://github.com/eeasuper/practiceNaverMockingWeb

мой apicall в веб-интерфейсе: https://github.com/eeasuper/practiceNaverMockingWeb/blob/master/src/services/api.js

(бэкэнд-файл в хранилище веб-интерфейса не имеет отношения к этому сообщению.)

1 Ответ

0 голосов
/ 30 января 2019

В Spring Security я работал с моим проектом React-Redux в облаке после этой записи .Более того, следуя инструкциям пользователя bvulaj внизу этой ссылки на github , мой проект React работал на localhost.Моя версия реакции - 16.8.6, а версия Spring - 4.0.0.

...