origin has been blocked by CORS policy Spring boot and React
带有React的Spring Boot
从CORS策略阻止从原点" http:// localhost:3000"访问" http:// localhost:8080 /"处的XMLHttpRequest:
这是一个返回所有区域对象的控制器
Access to XMLHttpRequest at 'http://localhost:8080/ from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package com.ministry.demo.controller; import com.ministry.demo.model.District; import com.ministry.demo.repository.DistrictRepository; import com.ministry.demo.service.DistrictService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping(path ="district") public class DistrictController { @Autowired DistrictService service; @GetMapping(path ="getAll") List<District> getAllDistrict(){ return service.getAllDistricts(); } } |
我找到了答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package com.ministry.demo.controller; import java.util.List; @RestController @CrossOrigin @RequestMapping(path ="district") public class DistrictController { @Autowired DistrictService service; @GetMapping(path ="getAll") List<District> getAllDistrict(){ return service.getAllDistricts(); } } |
MyConfiguration.java
1 2 3 4 5 6 7 8 9 10 | @Configuration public class MyConfiguration implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("*"); } } |
如果您的后端和应用程序不在同一地址上运行,则浏览器通常不允许您调用后端。
这旨在成为一种安全功能。
要允许您的浏览器调用您的api,请将Access-Control-****标头添加到后端响应中(从Spring应答时)。
参见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
允许所有来源的最基本的标头:
1 | Access-Control-Allow-Origin: * |
这是在Spring中添加这些标题的教程:https://spring.io/guides/gs/rest-service-cors/