Angular 即使在用@CrossOrigin(origins=";*";)注释控制器之后,交叉源请求也会被阻止?
我有一个SpringBoot控制器,如下所示Angular 即使在用@CrossOrigin(origins=";*";)注释控制器之后,交叉源请求也会被阻止?,angular,spring,spring-boot,Angular,Spring,Spring Boot,我有一个SpringBoot控制器,如下所示 @CrossOrigin(origins="*") public class FormController { @PostMapping(path="/basicForm") public String postResponseController( @RequestBody FormDomain loginForm) { System.err.println("basic form meth
@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;
}
}
以及调用控制器方法的角度脚本
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.
如何解决此问题?您必须在FormController
中添加@RestController
@Controller
是@组件
类的专门化,允许通过类路径扫描自动检测实现类。而@RestController
是@Controller
的专门化,它消除了对@ResponseBody
的需要。您可以在FormController
中参考Add@RestController
,使用浏览器中的开发人员工具,检查是否发送了标题