簡體   English   中英

如何在 Spring 啟動和 Angular 中啟用 CORS

[英]How to enable CORS in Spring Boot and Angular

我在 spring 引導服務器中啟用了 CORS,如下所示。

@RestController
@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping("/api/v1")
public class EmployeeController {
    @Autowired
    private EmployeeRepository employeeRepository;

    @PostMapping("/employees")
    public Employee createEmployee(@Valid @RequestBody Employee employee) {
        return employeeRepository.save(employee);
    }
}

創建新員工時,我收到錯誤消息,

Access to XMLHttpRequest at 'http://localhost:8080/springboot-crud-rest/api/v1/employees' 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.

我還嘗試在 Angular CLI 應用程序上啟用服務器端代理,這些應用程序已被彈出但我找不到任何文件webpack.config.js

在 CORS 更改中,前端不需要更改。 后端必須正確配置它,如果您將此后端部署在雲上,則需要進行一些設置。 否則你應該對你所做的方法沒問題

只需將相同的 CrossOrigin 放在 @PostMapping 上,如下所示。 它應該沒問題。

@RestController
@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping("/api/v1")
public class EmployeeController {
    @Autowired
    private EmployeeRepository employeeRepository;

    @CrossOrigin(origins = "http://localhost:4200")
    @PostMapping("/employees")
    public Employee createEmployee(@Valid @RequestBody Employee employee) {
        return employeeRepository.save(employee);
    }
}

順便說一句,在每個 api 上使用此注釋並不是最佳實踐。 而是在您的 application.properties 中配置它,使其適用於所有 API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM