728x90
반응형
Nextjs App Router 서버 사이드 요청
- Nextjs의 App Router를 통해 서버사이드에서 요청 날리게끔 구성되어 있다.
- 요청에 쿠키를 담아 서버쪽에서 검증 받는 흐름이지만, 쿠키가 계속 안 들어왔다.
- credentials: "include" 인데도 들어오지 않는 것에 의문을 가졌다.
- 결론은 서버 사이드에서의 요청일 경우 직접 쿠키를 담아줘야 한다는 것이다.
쿠키 양식
"Cookie": "accessToken=tokendata; refreshToken=refreshToken"
변경된 코드
- 헤더에 직접 입력
- API 라우트에서 쿠키를 뽑아와 인자로 던짐
클라이언트 사이드 요청 함수
- react query를 이용해 요청 및 관리
- 이 때는 쿠키를 담을 수 없다.
- 클라이언트 사이드에서는 쿠키를 가져올 수 없음. 브라우저 범위이기 때문
export interface ReferenceListResponse {
status: number;
code: string;
message: string;
result: ReferenceListItem[];
totalCount: number;
}
export interface ReferenceListItem {
referenceSeq: string;
referenceName?: string;
referenceUrl: string;
referenceMemo?: string;
referenceCategory: string;
createdAt: string;
}
export const referenceListRequest = async (props: ReferenceListRequest) => {
const response = await jsFetch<ReferenceListResponse>(`/api/reference/list`, {
method: 'post',
cache: 'no-store',
body: JSON.stringify(props),
headers: {
'content-type': 'application/json',
},
});
return response;
};
서버 사이드 요청 함수
export interface ReferenceListRequest {
category: string;
page: number;
pageSize: number;
}
export const referenceList = async (request: ReferenceListRequest, accessToken: string, refreshToken: string) => {
const response = await fetch(
`${ process.env.NEXT_PUBLIC_BASE_API }/reference/list`, {
method: 'post',
cache: 'no-store',
body: JSON.stringify({ category: request.category, page: request.page, pageSize: request.pageSize }),
headers: {
'content-type': 'application/json',
"Cookie": `accessToken=${ accessToken }; refreshToken=${ refreshToken }`
},
credentials: 'include', // 쿠키를 포함해서 요청 전송
next: { tags: [ 'search-word' ] },
});
return response;
};
728x90
반응형
'기록 > 사이드 프로젝트' 카테고리의 다른 글
[AUTH] 검증 방법 변경 - Http Only Cookie (0) | 2025.01.31 |
---|---|
[OAUTH] 구글 OAuth (0) | 2025.01.02 |