SpringBoot 크로스 오 버 해결 5 가지 방식 소결
5764 단어 SpringBoot크로스 필드
크로스 필드:브 라 우 저가 다른 사이트 의 스 크 립 트 를 실행 할 수 없 음 을 말 합 니 다.이것 은 브 라 우 저의 동원 정책 으로 인해 발생 한 것 으로 브 라 우 저가 javascript 에 가 하 는 안전 제한 입 니 다.
예 를 들 어 a 페이지 가 b 페이지 자원 을 가 져 오 려 면 a,b 페이지 의 프로 토 콜,도 메 인 이름,포트,하위 도 메 인 이름 이 다 르 면 방문 하 는 행동 은 모두 도 메 인 을 뛰 어 넘 는 것 이 고 브 라 우 저 는 안전 문 제 를 위해 도 메 인 을 뛰 어 넘 는 방문 을 제한 합 니 다.즉,도 메 인 을 뛰 어 넘 는 요청 자원 을 허용 하지 않 습 니 다.메모:도 메 인 간 접근 제한 은 브 라 우 저의 제한 입 니 다.그 걸 이해 하 는 게 중요 해!!
동원 정책:프로 토 콜,도 메 인 이름,포트 가 모두 같 아야 하 는데 그 중 하 나 는 다 르 면 크로스 필드 가 발생 합 니 다.
자바 CORS 크로스 도 메 인 요청 해결 방법
CORS 의 크로스 도 메 인 요청 에 대해 다음 과 같은 몇 가지 방법 으로 선택 할 수 있 습 니 다.
임의의 설정 클래스 에서 새로운 CorsFIlter Bean 을 되 돌려 주 고 맵 경로 와 구체 적 인 CORS 설정 경 로 를 추가 합 니 다.
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
//1. CORS
CorsConfiguration config = new CorsConfiguration();
//
config.addAllowedOrigin("*");
// Cookie
config.setAllowCredentials(true);
//
config.addAllowedMethod("*");
//
config.addAllowedHeader("*");
//
config.addExposedHeader("*");
//2.
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
corsConfigurationSource.registerCorsConfiguration("/**",config);
//3. CorsFilter
return new CorsFilter(corsConfigurationSource);
}
}
WebMvcConfigurer 다시 쓰기(전역 전역)
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
// Cookie
.allowCredentials(true)
//
.allowedOrigins("*")
.allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"})
.allowedHeaders("*")
.exposedHeaders("*");
}
}
주석 사용(부분 크로스 필드)컨트롤 러(클래스)에 주 해 를 사용 합 니 다@CrossOrigin:이 클래스 의 모든 방법 이 도 메 인 을 넘 을 수 있 음 을 표시 합 니 다.
@RestController
@CrossOrigin(origins = "*")
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello world";
}
}
방법 에 주 해 를 사용 합 니 다@CrossOrigin:
@RequestMapping("/hello")
@CrossOrigin(origins = "*")
//@CrossOrigin(value = "http://localhost:8081") // ip
public String hello() {
return "hello world";
}
응답 헤드 수 동 설정(부분 크로스 필드)HttpServletResponse 대상 에 응답 헤더(Access-Control-Allow-Origin)를 추가 하여 원본 도 메 인 에 권한 을 부여 합 니 다.여기 서 Origin 의 값 도"*"로 설정 하여 모든 줄 을 표시 할 수 있 습 니 다.
@RequestMapping("/index")
public String index(HttpServletResponse response) {
response.addHeader("Access-Allow-Control-Origin","*");
return "index";
}
사용자 정의 filter 를 사용 하여 크로스 필드 구현먼저 필 터 를 만 듭 니 다.MyCorsFilter.java 라 는 이름 을 지 을 수 있 습 니 다.
package cn.wideth.aop;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
@Component
public class MyCorsFilter 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,content-type");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
본문 소결본 고 는 SpringBoot 가 도 메 인 을 뛰 어 넘 는 5 가지 방식 을 소 개 했 는데 본인 이 가장 많이 사용 하 는 것 은 세 번 째 입 니 다.
여기 서 SpringBoot 가 크로스 도 메 인 을 해결 하 는 5 가지 방식 의 소결 에 관 한 글 을 소개 합 니 다.더 많은 SpringBoot 가 크로스 도 메 인 을 해결 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.