복붙노트

[SPRING] 휴식 컨트롤러에서 코러스 문제 제거 방법

SPRING

휴식 컨트롤러에서 코러스 문제 제거 방법

내 프로젝트에서 다른 서버의 클라이언트 응용 프로그램에서 호출하는 나머지 끝점이 있습니다. @CrossOrigin 주석을 사용하여 Cors를 성공적으로 사용 중지했으며 Chrome에서 다음 오류가 발생하는 Delete 메소드를 제외한 모든 메소드가 정상적으로 작동합니다.

XMLHttpRequest는 http : // localhost : 8856 / robotpart / 1291542214 / compatibilities를로드 할 수 없습니다. 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. 'Access-Control-Allow-Origin'헤더가 요청 된 자원에 없습니다. 따라서 출처 'http://127.0.0.1:8888'은 액세스가 허용되지 않습니다. 응답에는 HTTP 상태 코드 403이 있습니다.

여기 내 컨트롤러가 있습니다 :

@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) {

        //...
    }

    }

주위에?

해결법

  1. ==============================

    1.HTTP 요청을 분석 한 후 해결책을 찾았는데, Access Control-Allow-Methods 헤더에 DELETE 메소드가 없으므로 @CrossOrigin 주석을 삭제하고이 bean을 구성에 추가하여 추가했습니다.

    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");
    
    
                    }
                };
            }
    
  2. from https://stackoverflow.com/questions/43166984/delete-method-cors-issue-in-rest-controller by cc-by-sa and MIT license