Next.js 프로젝트에서 spring 서버와 통신 중 Network를 뒤져보다 내가 작성한 reissue 메소드가 두 번 실행되는 것을 보고 궁금하여 비교해보았다.

요청에서 특이한 점을 발견하였는데, 먼저 통신한 네트워크에서 method를 OPTIONS 라고 하여 보냈다는 점이었다. 그리고 통신 타입도 reflight 라는 것으로 되어있었다.
공식문서에서는 이 것을 주어진 서버에 대해 허용된 통신 옵션을 요청하는 것이라고 한다. 특히 CORS에 대해 사전 비행(preflight) 요청에 대해 이 요청이 성공할지 여부를 확인하는데 사용된다고 한다. 즉, 더 효율적인 통신과 보안을 위해 사용하는 것이다.
서버에서는 이 요청에 대해 요청이 실패한다면 405(Method Not Allowed)를 반환하며, 성공한다면 허용되는 method, headers, content-type을 알려준다. 터미널에서 아래 명령어를 사용하면 위에서 말한 것에 대한 응답을 받을 수 있다.
curl -x OPTIONS {URL} -i
...response
Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE
Access-Control-Request-Headers: content-type, etc...