Весна "Нет 'Access-Control-Allow-Origin' заголовка" ошибка при запросе POST - PullRequest
0 голосов
/ 15 мая 2018

Я делаю приложение с пружинным сервером и угловым для клиента.Я пытаюсь сделать запрос на сообщение, и у меня появляется эта ошибка:

Не удалось загрузить http://localhost:8080/statuts:

"Нет заголовка 'Access-Control-Allow-Origin'присутствует в запрошенном ресурсе. Следовательно, источник 'http://localhost:4200' не имеет доступа. Ответ имеет код состояния HTTP 415. "

Я следовал инструкциям Spring: https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-cors-controller и у меня ничего не работает.

Что касается моего весеннего кода, я поместил перекрестную аннотацию, которая работает для всех других запросов, таких как get и put (если я удаляю эту строку, остальные запросы отправляют точно такую ​​же ошибку)

@CrossOrigin(origins = "http://localhost:4200")
public class ExempleController {

    @PostMapping(path="", consumes = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody Exemple addExemple(HttpServletRequest request) throws IOException {
        Exemple exemple = new Exemple();
        Exemple updatedStatut = objectMapper.readerForUpdating(exemple).readValue(request.getReader());
        statutRepository.save(updatedExemple);
        return exemple;
    }

Я также попробовал его с глобальным конфигом, но та же проблема

Мой запрос в угловом виде:

create(exemple: Exemple){
    return this.http.post("localhost:8080/exemples", JSON.stringify(exemple));
}

Спасибо за вашу помощь

== Редактировать ==

Я не упомянул об этом, но мой запрос работает, так как он отлично работает с PostMan, это проблема связи между клиентом и сервером

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Хорошо, я нашел ответ. Проблема в угловом коде, который не отправляет заголовки в необходимом почтовом запросе.

поэтому я изменил свой угловой код на:

create(exemple: Exemple){
    const headers1 = new HttpHeaders({'Content-Type':'application/json; charset=utf-8'});
    return this.http.post(this.ExempleAPI, JSON.stringify(exemple), {headers: headers1});
}

надеется, что это может помочь кому-то еще

0 голосов
/ 15 мая 2018

Я не вижу необходимости в аннотации @CrossOrigin здесь, если только нет особой причины, о которой вы не упомянули.

О создании POST WebService с помощью Spring вы можете следовать этому примеру:

    @RestController
    public class ExempleController {

    @RequestMapping(value = "/", method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE)

   public  @ResponseBody Exemple addExemple(@RequestBody LinkedHashMap map, HttpServletRequest request) throws IOException {

          // CODE HERE
        }

    }

* Вы можете рассмотреть возможность замены LinkedHashMap вашим классом DTO, но это будет работать.

Надеюсь, это поможет; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...