Yo uso NextJS con ServerSide Rendering
Uso un servicio de autenticación con access_token (JWT)
No puedo almacenar access_token en localStorage porque no está disponible en getServerSideProps
así que puse access_token en una httpOnly cookie para que esté disponible en el servidor.
Tengo algunas solicitudes en el servidor y otras en el cliente, por lo que necesito obtener access_token de dos maneras, en el servidor desde req.headers.cookie y en el cliente desde document.cookie
Quiero escribir interceptores axios para agregar access_token a cada solicitud.
esto funciona para el lado del cliente, pero ¿qué puedo hacer para el lado del servidor?
import axios from 'axios'; const _axios = axios.create(); axiosInstance.interceptors.request.use(function (config) { let token; // check if it's on the client-side if(typeof document !== 'undefined') token = getToken(document.cookie); // how to check for server-side and how to get cookie ? return { ...config, headers: { 'Authorization': `Bearer ${token}` } }; }, function (error) { return Promise.reject(error); }); export default axiosInstance;Es posible que desee utilizar nookies
De getServerSideProps
export async function getServerSideProps(ctx) { //Parse cookies from request header const cookies = nookies.get(ctx) //Set cookies on response header nookies.set(ctx, 'key', 'token', { path: '/' }) ... }Desde la ruta API
export default function handler(req, res) { //Parse cookies from request header const cookies = nookies.get({ req }) //Set cookies on response header nookies.set({ res }, 'key', 'token', { path: '/' }) ... }