도메인 간 액세스를 쉽고 효과적으로 수행하는 방법
2703 단어 도메인 간 액세스
import org.springframework.web.bind.annotation.CrossOrigin;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
*
*
* @author lh
* @version 1.0
* @date 2020-09-03 11:53
*/
public class CrossOriginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
HttpServletRequest req = (HttpServletRequest) request;
String type = req.getMethod();
resp.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
resp.setHeader("Access-Control-Max-Age", "3600");
resp.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type, Accept, Origin");
resp.setHeader("Access-Control-Allow-Credentials", "true");
if (type.toUpperCase().equals("OPTIONS") == true) {
resp.setHeader("Access-Control-Allow-Origin", "*");
resp.setHeader("Access-Control-Allow-Headers", "content-type");
resp.setContentType("text/plain;charset=utf-8");
}
chain.doFilter(req, resp);
}
@Override
public void destroy() {
}
}
설명:
resp.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
resp.setHeader("Access-Control-Max-Age", "3600");
resp.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type, Accept, Origin");
resp.setHeader("Access-Control-Allow-Credentials", "true");
이 몇 가지 설정은 ContentType: "응용 프로그램/json"과 같은 방식의 크로스 접근을 설정하기 위해서입니다.
if (type.toUpperCase().equals("OPTIONS") == true) {
resp.setHeader("Access-Control-Allow-Origin", "*");
resp.setHeader("Access-Control-Allow-Headers", "content-type");
resp.setContentType("text/plain;charset=utf-8");
}
이 몇 개의 코드는 주로ContentType: "응용 프로그램/json"과 같은 방식으로 전역에 접근합니다.처음에 OPTIONS 요청을 할 수 있기 때문에 OPTIONS가 성공한 후에 두 번째 요청을 할 수 있기 때문에 이런 것은 특별히 처리해야 한다.
이상의 코드는 실제 실천을 거쳐 결국 문제를 해결했다.