SpringBoot 에서 도 메 인 을 뛰 어 넘 는 5 가지 방식 의 소결 을 실현 합 니 다.
6096 단어 SpringBoot크로스 필드
브 라 우 저의 동원 정책 제한 에서 비롯 되 었 습 니 다.같은 소스 정책(Sameoriginpolicy)은 브 라 우 저의 가장 핵심 적 이 고 기본 적 인 보안 기능 으로 같은 소스 정책 이 없 으 면 브 라 우 저의 정상 적 인 기능 이 영향 을 받 을 수 있 습 니 다.웹 은 같은 소스 정책 을 바탕 으로 구 축 된 것 이 라 고 할 수 있 습 니 다.브 라 우 저 는 같은 소스 정책 에 대한 실현 일 뿐 입 니 다.
같은 소스 정책 은 한 도 메 인의 자바 script 스 크 립 트 와 다른 도 메 인의 내용 이 상호작용 하 는 것 을 막 습 니 다.동원(즉 같은 도 메 인 에서)이란 두 페이지 가 같은 프로 토 콜(protocol),호스트(host)와 포트 번호(port)를 가지 고 있다 는 것 이다.
2.무엇이 크로스 필드 입 니까?
url 을 요청 하 는 프로 토 콜,도 메 인 이름,포트 세 가지 중 하 나 는 현재 페이지 url 과 다 르 면 크로스 필드 입 니 다.
3.비 동원 제한
【1】원본 이 아 닌 웹 페이지 의 Cookie,LocalStorage,IndexedDB 를 읽 을 수 없습니다.
[2]비 동원 홈 페이지 의 DOM 을 접 할 수 없습니다.
【3】비 동원 주소 로 AJAX 요청 을 보 낼 수 없습니다.
4.자바 백 엔 드 에서 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);
}
}
2.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("*");
}
}
3.주석 사용(부분 크로스)컨트롤 러(클래스)에 주 해 를 사용 합 니 다@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";
}
4.응답 헤드 수 동 설정(부분 크로스)HttpServletResponse 대상 에 응답 헤더(Access-Control-Allow-Origin)를 추가 하여 원본 도 메 인 에 권한 을 부여 합 니 다.여기 서 Origin 의 값 도"*"로 설정 하여 모든 줄 을 표시 할 수 있 습 니 다.추천:150 개의 흔 한 자바 면접 문제 분해 모음
@RequestMapping("/index")
public String index(HttpServletResponse response) {
response.addHeader("Access-Allow-Control-Origin","*");
return "index";
}
5.사용자 정의 filter 를 사용 하여 크로스 필드 구현먼저 필 터 를 만 듭 니 다.MyCorsFilter.java 라 는 이름 을 지 을 수 있 습 니 다.
package com.mesnac.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() {}
}
웹.xml 에 이 필 터 를 설정 하여 2021 자바 면접 보전 을 적용 합 니 다.
<!-- START-->
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>com.mesnac.aop.MyCorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- END -->
스프링 부 트 에서 크로스 오 버 를 실현 하 는 5 가지 방식 의 소결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 스프링 부 트 크로스 오 버 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.