Запрос Cross Origin блокируется даже после аннотирования контроллера с помощью @CrossOrigin (origins = "*")? - PullRequest
0 голосов
/ 20 января 2020

У меня SpringBoot Controller следующим образом

@CrossOrigin(origins="*")
public class FormController {
      @PostMapping(path="/basicForm")
 public String postResponseController(
              @RequestBody FormDomain loginForm) {
        System.err.println("basic form method called");
         return "file transfer completed successfully";
     }
}

Я пометил контроллер @CrossOrigin(origins="*") для включения CORS. Вот мой класс FormDomain

public class FormDomain {
     private MultipartFile fileInput;

    public MultipartFile getFileInput() {
        return fileInput;
    }

    public void setFileInput(MultipartFile fileInput) {
        this.fileInput = fileInput;
    }
    }

и сценарий angular, вызывающий метод контроллера

 onClickSubmit(data) {
        this.http.post("http://localhost:8080/basicForm", data).subscribe( (ob)=>(console.log(ob)));
      }

Несмотря на то, что я аннотировал контроллер для включения CORS, я получаю следующую ошибку в консоли браузера

Access to XMLHttpRequest at 'http://localhost:8080/basicForm' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Как решить эту проблему?

1 Ответ

2 голосов
/ 20 января 2020

Вы должны добавить @RestController в FormController

@Controller специализацию класса @Component и разрешить автоопределение классов реализации посредством сканирования пути к классам. в то время как @RestController является специализацией @Controller, которая устраняет необходимость в @ResponseBody. Вы можете сослаться @ Controller, RestController

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