JavaScript/JQuery

[JQuery] .ajaxSend 와 ajaxSetup(), beforeSend 설정 (csrf token 설정)

BBB.OOO 2024. 9. 10. 15:30
반응형

환경 = Spring Boot, JQuery, thymeleaf

 

Spring Boot 와 Thymeleaf  환경에서 JQuery Ajax 요청 중 Spring Security 의 CSRF Token을 헤더에 기본적으로

설정하기 위해 찾아보다가 ajaxSend 함수와 ajaxSetup() 의 beforeSend 를 보아 정리한다.

 

 

.ajaxSend(function(e, xhr, options){ ... })

ajaxSend 는 JQuery 에서 Ajax 요청을 보내기 전에 실행시킬 함수를 정의한다.

즉, Ajax 이벤트 처리기이다. Ajax 요청을 보내기 전에 매번 ajaxSend() 함수 이벤트를 발생시킨다.

 

Ajax 요청을 서버에 보내기전에 공통적으로 처리해야할 것이 있을 때 사용한다.

 

사용법

// JQuery 공식 문서
.on("ajaxSend", handler)


// 사용법 (Spring Security Csrf token header 설정)
<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
const token = $("meta[name='_csrf']").attr('content');
const token_header = $("meta[name='_csrf_header']").attr('content');

$(document).ajaxSend(function(e, xhr, options){
	xhr.setRequestHeader(token_header, token);
});

 

 

 

 

JQuery.ajaxSetup({옵션})

JQuery Ajax 요청 시 옵션 값들을 공통적으로 설정하기 위해 사용한다.

Ajax 요청할 때마다 동일한 옵션값으로 설정하게 되면 유지보수가 어려우므로

공통적인 부분을 ajaxSetup 함수를 통해 설정할 수 있다.

 

본인은 ajax 요청 전 설정을 하기 위해서 beforeSend 옵션을 사용했다.

 

<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
const token = $("meta[name='_csrf']").attr('content');
const token_header = $("meta[name='_csrf_header']").attr('content');

$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader(token_header, token);
        }
    }
});

 

 

옵션

Name Value/Description
async Boolean 값
요청이 비동기식으로 처리되는지 여부를 나타낸다.
기본값은 true
beforeSend(xhr) 요청을 보내기 전에 실행되는 함수
cache Boolean 값
브라우저가 요청된 페이지를 캐싱해야 하는지 여부를 나타낸다.
기본값은 true
complete(xhr,status) 요청이 완료됐을 때 실행되는 함수
contentType 서버로 보내지는 데이터의 content-type
기본값은 “application/x-www-form-urlencoded"
data 서버로 보내지는 데이터를 의미
dataFilter(data,type) XMLHttpRequest의 응답 데이터를 처리할 때 사용되는 함수
dataType 서버 응답으로 받는 데이터 타입
error(xhr,status,error) 요청이 실패했을 때 실행되는 함수
global Boolean 값
요청에 대해 전역 AJAX 이벤트를 실행할 지 여부를 명시함
기본값은 true
ifModified Boolean 값
마지막 요청 이후에 응답이 변경됐을 때만 처리하는지를 명시
기본값은 false
jsonp jsonp 요청에서 callback 함수를 오버라이딩하는 문자열
jsonpCallback jsonp 요청에서 callback 함수 이름을 나타낸다.
password HTTP 접근 인증(access authentication) 요청에 사용할 password를 나타낸다.
processData Boolean 값
요청으로 보낸 데이터를 query string 형태로 변환할지 여부를 나타낸다.
기본값은 true
scriptCharset 요청할 때의 charset을 나타낸다.
success(result,status,xhr) 요청이 성공했을 때 수행되는 함수
timeout 요청에 대해 로컬의 응답제한시간(timeout)을 밀리초로 나타낸다.
type 요청 type(GET 혹은 POST)을 명시함
url 요청을 보낼 URL을 나타낸다.
기본값은 현재페이지
username HTTP 접근 인증(access authentication) 요청에 사용할 username을 나타낸다.
xhr XMLHttpRequest 오브젝트를 생성할 때 사용하는 함수 

 

 

 

 

 

반응형