这是我的问题。我有一个仪表板页面和一个程序页面。问题出在程序页面,因为我使用了SSR,而在仪表板页面上,我在客户端调用我的saga,一切都运作正常。
客户端:客户端向后端服务器发送httpOnly cookie,并从后端获取数据供使用。
服务器端:但是由于某些原因,在getServerSideProps中调用相同的saga时,当然会使用{withCredentials: true},它不会将令牌发送到后端。在getServerSideProps中获得的req对象内,通过req.headers.cookie可以看到cookie,但是它不会发送它。那么手动添加它的解决方案是什么?还是其他方法?
代码:
export const getServerSideProps = wrapper.getServerSideProps(
async ({ store, req }) => {
store.dispatch(fetchprogramsRequest(req.url));
const cookies = cookie.parse(req.headers.cookie);
console.log('COOKIES', cookies); // HERE you can see the cookies
// end the saga
store.dispatch(END);
await store.sagaTask.toPromise();
}
);
The axios inside the saga:
const res = yield axios.get(url, { withCredentials: true });
This is called in both cases (client-side: works, server-side: doesn't)