springmvc 차단기 가 ajax () 에 요청 한 특수 요청 헤드 처리
3315 단어 springmvc 크로스 필드
한편, 브 라 우 저 는 보안 을 고려 하여 JS 가 크로스 오 버 요청 을 하 는 것 을 제 한 했 습 니 다. XHR 대상 을 사용 하여 요청 을 하려 면 같은 소스 정책 (SOP: Same Origin Policy) 을 따라 야 합 니 다. 크로스 오 버 요청 서버 가 되 돌아 오 는 데 이 터 는 브 라 우 저 에서 차단 되 어야 합 니 다.
따라서 차단기 에 서 는 크로스 필드 허용 설정, response. setHeader ("Access - Control - Allow - Origin", "*"), response. setHeader ("Access - Control - Allow - Methods", "PUT, POST, GET, DELETE, OPTIONS") 를 해 야 합 니 다.허 용 된 방법 을 설정 하 다.
특별한 요청 헤더 라면 허용 되 는 요청 헤 더 를 설정 해 야 합 니 다. 그렇지 않 으 면 실제 요청 을 보 내 면 브 라 우 저 보고 가 잘못 되 었 습 니 다.
request header field xxxxxx is not allowed by Access-Control-Allow-Header【chrome】,
따라서 특수 요청 헤드 를 설정 하려 면 response. setHeader ("Access - Control - Allow - Headers", "Cpp Authorization, Cpp Reuqest * *") 를 설정 해 야 합 니 다.
장면 을 사용 하려 면 특수 헤드 정보 와 파 라 메 터 를 가 져 와 서 검 사 를 해 야 합 니 다. 검사 에 성공 하면 인터페이스 에 들 어 갑 니 다. 그렇지 않 으 면 차단 합 니 다. 서버 가 허용 하 는 도 메 인, 허용 하 는 헤드 정 보 를 설정 하고 사전 요청 여 부 를 판단 합 니 다. 만약 에 사전 요청 에 202 상 태 를 설정 하고 다시 쓰 면 ajax 가 실제 요청 을 보 내 서 필요 한 파 라 메 터 를 가 져 와 차단 처 리 를 합 니 다.
잔말 말고 코드:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info(" ");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=utf-8");
String method = request.getMethod();
response.setHeader("Access-Control-Allow-Origin", "*");//
response.setHeader("Access-Control-Allow-Headers", "Cpp_Authorization,Cpp_Reuqest_***"); // header ,Content-Type
response.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
if(method.equals("OPTIONS")){
log.info(" options ");
try{
// ajax
response.setStatus(202);
response.getWriter().write(1);
return false;
}catch (Exception e){
log.info(e);
return false;
}
}else{
String header = request.getHeader("someHeader");// header
//
if(dosomething(map,header))){
return true;
}
}
//
return false;
}
}