Reactjs 访问服务器上的Next.js客户端状态
我正在尝试使用Reactjs 访问服务器上的Next.js客户端状态,reactjs,redux,next.js,server-side-rendering,Reactjs,Redux,Next.js,Server Side Rendering,我正在尝试使用getServerSideProps函数在我的Next.js应用程序中获取动态数据。请求必须包含存储在客户端的令牌,以便在后端对用户进行身份验证 我尝试了以下方法: export async function getServerSideProps(context) { const token = window.localStorage.getItem('token') const data = await axios.get("/data", { hea
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没有定义
,这很有意义,因为请求是在服务器上发出的,而window
对象不存在(它只存在于客户端)
我可以在
getServerSideProps
中访问客户端状态,或者在服务器上存储下一个状态吗?如果没有,看起来唯一的方法就是在客户端发出请求。使用cookies。因为getServersideProps发生在服务器端呈现中,所以Windows或localStorage无法访问。使用cookie和js cookie库来设置和获取令牌。请改用cookie。因为getServersideProps发生在服务器端呈现中,所以Windows或localStorage无法访问。使用cookie和js cookie library设置和获取令牌。最好的方法是将令牌存储在cookie中,这样它将在客户端和服务器端的窗口中可用,并且和本地存储
都存在于浏览器中,而不是在发生服务器端渲染的节点应用程序中。客户端代码应随请求一起发送JWT。最好的方法是将令牌存储在Cookie中,这样它将在客户端和服务器端窗口和本地存储上可用,这两者都存在于浏览器中,而不是发生服务器端渲染的节点应用程序中。客户端代码应该与请求一起发送JWT。