如何在 Next.js 應用程式中在伺服器端獲取 Cookie
在 Next.js 中,在伺服器端渲染時存取 Cookie 可能比你想像中困難。以下是我解決這個問題的方法。
我遇到了這個問題。我的應用程式依賴於Cookie進行身份驗證,在使用 Next.js 時,顯然我的 Cookie 在首頁初始化時未被設置。
以下是負責使用Axios對一個 GET 端點進行請求的程式碼:
1 | Bookings.getInitialProps = async ctx => { |
我在伺服器端的端點上有 Passport.js,但它無法在 SSR 頁面上對用戶進行身份驗證,因為它找不到任何 Cookie。
我必須將程式碼更改為以下形式,將 Cookie 添加到 headers
中:
1 | Bookings.getInitialProps = async ctx => { |
讓 Cookie 在後端中可用的關鍵是添加:
1 | headers: ctx.req ? { cookie: ctx.req.headers.cookie } : undefined |
到 Axios 的設定中。
tags: [“Next.js”, “cookies”, “server-side rendering”, “Axios”]