본문 바로가기
SpringBoot

웹 상태코드 메시지

by devebucks 2020. 7. 11.
728x90

상태코드 : 302

 

하이퍼텍스트 전송 프로토콜 (HTTP)의 302 Found 리다이렉트 상태 응답 코드는 클라이언트가 요청한 리소스가 Location 헤더에 주어진 URL에 일시적으로 이동되었음을 가리킨다.[출처 : https://developer.mozilla.org/ko/docs/Web/HTTP/Status/302]

그래서.

springboot 테스트에서는... redirect응답의 경우 

status().isOk()는 200 상태코드를 증명하는 코드이고,

status().is3xxRedirection()가 3xx 상태코드를 증명하는 코드입니다. redirect 관련 상태코드입니다.

 

 

상태코드 : 403

 

월드 와이드 웹에 쓰이는 HTTP 프로토콜에서 403 Forbidden은 서버가 허용하지 않는 웹 페이지나 미디어를 사용자가 요청할 때 웹 서버가 반환하는 HTTP 상태 코드이다. 다시 말해, 클라이언트가 서버에 도달할 수 있어도 서버가 페이지 접근 허용을 거부했다는 것을 뜻한다. 위키백과

어떤 경우에 이런 상태코드를 볼 수 있냐면... 

사이트 간 요청 위조(위키백과)

Springboot Security 의존성을 추가하고, Form submit을 통해서 서버에 값이 잘 들어가는지 단위테스트를 할 때 발생합니다. 그 이유는 Springboot Security 자체적으로 Client응답에 Form태그 안에 csrf라는 코드값이 hidden상태로 끼여서 응답이 내보내집니다. 그래서 Client가 이 Form태그에 값을 입력해서 요청을 다시 던지면, 서버가 들고 있는 csrf 토큰 값과 요청에서 오는 csrf 토큰 값을 비교합니다. 일치하면, form submit요청이 받아들여 지지만, 일치하지 않을 경우에는 403상태코드가 반환됩니다.

 

해결방법

경우1. 단위테스트

403 상태코드를 200 정상 요청 상태코드로 탈출을 하려면, 단위테스트 할 때에 csrf token값을 역시 form submit에 파라미터값으로 넣어서 요청을 보내줘야 합니다.

다음과 같이 with()메소드 안에 scrf()메소드를 넣어주면 됩니다.

 

경우2. Ajax

스프링 시큐리티 공식문서

 

ajax가 사용되는 <script>블럭위에 <script>블럭을 새로 만들고 그 안에 추가.

 

상태코드 : 400

badRequest

 

 

상태코드 : 405

 

728x90

댓글