如何在 Nextjs 中使用代理将 HttpOnly cookie 发送到不同域上的 django?

问题描述

我之前发布过关于无法从 getServerSideProps 或 useEffect here 将 HttpOnly cookie 从 nextJS 发送到 django 的帖子。我认为原因是我的 django 和 Nextjs 在不同的域上运行。所以我需要为后端和前端使用相同的域。这是否意味着来自 nextJS 的请求应该来自 127.0.0.1:8000 而不是 127.0.0.1:3000?

如果是,我是否需要在 Nextjs 中使用代理?

另外,我已经设置了 django-cors-headers,还需要代理吗?

解决方法

是的。您需要设置一个代理服务器,将您的请求从 127.0.0.1:3000 转发到 127.0.0.1:8000。这样,您的 cookie 将与您的后端服务器共享,因为浏览器会假定它们来自同一来源。

关于在nextjs上设置http代理可以参考这个Github Answer

设置 django CORS 标头不适用于您的 cookie。 CORS 指的是来自不同来源的请求,设置这些标头将允许您的后端接收来自您在 allowedHosts 声明中指定的不同来源的请求。 Cookie 可以在不同的子域中共享,但不能在不同的域中共享。