서버 측이 크로스 도메인 문제를 해결하는 세 가지 방법

크로스 도메인은 html 파일이 있는 서버와 aax가 요청한 서버가 서로 다른 ip+port를 가리킨다. 예를 들어 -'192.168.1:8080'과'192.168.1.2:8080'은 서로 다른 도메인이다. -'192.168.1.1:8080'과'192.168.1:8081'은 서로 다른 영역이다.
이런 문제를 해결하는 방법은 매우 많은데 클라이언트와 서비스 측이 모두 변경해야 하는 것이 있다. 예를 들어 jsonp,iframe 등이다.클라이언트만 변경할 수 있는 경우는hybrid 앱 개발에만 나타난다. 즉native 방법을 호출하여 네트워크 요청을 하는 것이다.서버 설정만 필요한 것이 있습니다. 다음은 3가지 서버 설정 방법을 소개합니다.

제1종


mvc 프레임워크가spring4.2 이상이면 @CrossOrigin 하나로 해결할 수 있습니다.@CrossOrigin을 Controller에 추가하면 이 Controller의 모든 요청은 크로스 도메인을 지원합니다. 코드는 다음과 같습니다.
@Controller
@CrossOrigin
public class GreetingController {

@CrossOrigin을 요청 방법에 추가하면 이 요청은 전역을 지원합니다. 코드는 다음과 같습니다.
@CrossOrigin
    @RequestMapping("/greeting")
    public @ResponseBody Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {

자세한 @CrossOrigin 설명은 여기를 참조하십시오.

제2종


전역 설정도spring4.2 이상이 필요합니다.
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000");
            }
        };
    }

.addCorsMappings () 의 매개 변수는 전역을 지원하는 URL을 나타냅니다.allowedOrigins()의 매개 변수는 이 인터페이스에 접근할 수 있는 도메인 이름을 나타냅니다. "*"로 설정하면 모든 도메인을 지원합니다.

제3종


이런 방법은 프레임워크와 무관하다. 두 개의jar 패키지가 필요하다. 여기를 누르면 다운로드를 할 수 있고, 두 개의jar 패키지를 놓을 수 있는 프로그램에,tomcat에 넣을 수 있으며, 아래의 설정을 웹에 쓸 수 있다.xml에서 하면 돼요.
< filter >   

     < filter-name > CORS  filter-name >   

     < filter-class > com.thetransactioncompany.cors.CORSFilter  filter-class >   

    < init-param >   

                                 < param-name > cors.allowOrigin  param-name >   

         < param-value > *  param-value >   

      init-param >   

     < init-param >   

      < param-name > cors.supportedMethods  param-name >   

         < param-value > GET, POST, HEAD, PUT, DELETE  param-value >   

      init-param >   

     < init-param >   

      < param-name > cors.supportedHeaders  param-name >   

         < param-value > Accept, Origin, X-Requested-With, Content-Type, Last-Modified  param-value >   

      init-param >   

     < init-param >   

         < param-name > cors.exposedHeaders  param-name >   

         < param-value > Set-Cookie  param-value >   

      init-param >   

     < init-param >   

         < param-name > cors.supportsCredentials  param-name >   

         < param-value > true  param-value >   

      init-param >   

 filter >   

< filter-mapping >   

     < filter-name > CORS  filter-name >   

     < url-pattern > /*  url-pattern >   

 filter-mapping >   

좋은 웹페이지 즐겨찾기