백 엔 드 인터페이스 지원 크로스 도 메 인 CORS 호출

3149 단어
Spring MVC 는 4.2 버 전부터 CORS 에 대한 지원 을 추가 하여 전역 적 으로 설정 할 수도 있 고 클래스 나 방법 에 대해 설정 할 수도 있 습 니 다.자바 코드 를 통 해서 도 가능 하고 xml 설정 을 통 해서 도 가능 합 니 다.낮은 버 전의 Spring MVC 는 Filter 를 통 해 response 에 http header 를 써 서 실현 할 수 있 으 며, Nginx 에 지원 을 추가 하 는 것 도 편리 하 다.
자바 설정
클래스 를 새로 만 들 고 도 메 인 을 뛰 어 넘 는 설정 을 합 니 다.
@Configuration
@EnableWebMvc
public class CorsConfigureAdapter extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        super.addCorsMappings(registry);
        registry.addMapping("/**");
    }
}

Controller 나 방법 에 @ CrossOrigin 주 해 를 사용 합 니 다.
@CrossOrigin(maxAge = 3600)
@RestController
@RequestMapping("/account")
public class AccountController {

    @CrossOrigin("http://domain2.com")
    @RequestMapping("/{id}")
    public Account retrieve(@PathVariable Long id) {
        // ...
    }

    @RequestMapping(method = RequestMethod.DELETE, path = "/{id}")
    public void remove(@PathVariable Long id) {
        // ...
    }
}

XML 기반 설정

    


이 설정 은 위의 JAVA 방식 의 첫 번 째 역할 과 같 습 니 다.마찬가지 로 더 복잡 한 설정 을 할 수 있 습 니 다.

    
    


SpringMVC 3 크로스 도 메 인 지원
SpringMVC 3 는 이상 의 방법 을 지원 하지 않 고 Filter 방식 으로 이 루어 집 니 다.
@Component
public class SimpleCORSFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
    }

    public void init(FilterConfig filterConfig) {}
    public void destroy() {}
}
web.xml 설정

    cors
    test.cors.SimpleCORSFilter


    cors
    /*


Nginx 크로스 도 메 인 요청 지원
설정 에 add_header Access-Control* 명령 을 추가 해 야 합 니 다. 예 를 들 어:
location /{
add_header 'Access-Control-Allow-Origin' 'http://other.subdomain.com';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET'; 
...
the rest of your configuration here
...
}

좋은 웹페이지 즐겨찾기