我正在尝试使用getServerSideProps
函数在Next.js应用程序中获取动态数据。该请求必须包含一个令牌,该令牌存储在客户端,以便在后端对用户进行身份验证。
我尝试了以下操作:
export async function getServerSideProps(context) {
const token = window.localStorage.getItem('token')
const data = await axios.get("/data", { headers: { Authorization: `Bearer ${token}` }});
return { props: { data } };
}
但是我得到ReferenceError : window is not defined
,这是有道理的,因为请求是在服务器上进行的,并且window
对象不存在于服务器上(仅存在于客户端上)。
我可以在getServerSideProps
中访问客户端状态还是可以在服务器上存储下一个状态?如果不是这样,看起来执行此操作的唯一方法就是将请求设为客户端。
答案 0 :(得分:2)
改用cookie。因为getServersideProps发生在服务器端渲染中,所以window或localStorage无法访问。使用cookie和js-cookie库来设置和获取令牌。