서버 측이 크로스 도메인 문제를 해결하는 세 가지 방법
6744 단어 백엔드 프레임워크
이런 문제를 해결하는 방법은 매우 많은데 클라이언트와 서비스 측이 모두 변경해야 하는 것이 있다. 예를 들어 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 >