У меня проблема с 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
(бэкэнд-файл в хранилище веб-интерфейса не имеет отношения к этому сообщению.)