2017-04-02 1 views
0

다른 프로젝트의 클라이언트 응용 프로그램에서 다른 서버에서 호출하는 Rest endpoint가 있습니다. 나는 @CrossOrigin 주석을 사용하여 성공적으로 비활성화 CORS를 가지고 있고, 모든 방법은 크롬에서 다음과 같은 오류가 발생합니다 삭제 방법을 제외하고 잘 작동 :Delete 메서드 Rest 컨트롤러에서 코러스 문제가 발생했습니다.

@CrossOrigin(origins = "*") 
@ExposesResourceFor(RobotPart.class) 
public class RobotPartController { 

     //All endpoints are working except the Delete Mapping 

    @GetMapping("/robotpart") 
    public ResponseEntity<List<RobotPartResource>> listAllParts() { 
     //.. 
    } 

    @GetMapping("/robotpart/{id}") 
    public ResponseEntity<RobotPartResource> getById(@PathVariable Integer id) { 
     //.. 
    } 


    @GetMapping("/robotpart/{id}/compatibilities") 
    public ResponseEntity<Collection<RobotPartResource>> getRobotCompatibilities(@PathVariable Integer id, 
      //.. 
    } 


    @PostMapping("/robotpart") 
    public ResponseEntity<RobotPartResource> getById(@RequestBody @Valid RobotPart newRobot) { 
     //.. 

    @PutMapping("/robotpart/{id}") 
    public ResponseEntity<RobotPartResource> modify(@PathVariable Integer id, @Valid @RequestBody RobotPart newRobot) { 

     //... 
    } 

    @DeleteMapping("/robotpart/{id}") 
    public ResponseEntity<RobotPart> deleteById(@PathVariable Integer id) { 

     //... 
    } 

    } 

모든 : 여기

XMLHttpRequest cannot load http://localhost:8856/robotpart/1291542214/compatibilities. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8888' is therefore not allowed access. The response had HTTP status code 403.

나의 컨트롤러 주위에?

답변

2

HTTP 요청을 분석 한 결과 Access Control-Allow-Methods 헤더에 DELETE 메소드가 없다는 것을 알았 기 때문에 @CrossOrigin 주석을 삭제하고이 bean을 구성에 추가하여 추가했습니다.

 @Bean 
     public WebMvcConfigurer corsConfigurer() { 
      return new WebMvcConfigurerAdapter() { 
       @Override 
       public void addCorsMappings(CorsRegistry registry) { 
        registry.addMapping("/robotpart/**").allowedOrigins("*").allowedMethods("GET", "POST","PUT", "DELETE"); 


       } 
      }; 
     } 
관련 문제