nuxtServerInit 没有收到 cookie
nuxtServerInit not receiving cookies
我想要达到的目标
基本思想是在 Nuxt 路由器中间件中收到 cookie 时将用户发送到另一条路由。
中间件始终在服务器端和客户端调用,并且在开发环境中完美运行。
只在生产中发生的问题是服务器端中间件永远不会收到cookie。
我的尝试
逻辑很简单:nuxtServerInit
在服务器上调用 before 路由器中间件被调用。所以它从用户那里获取cookie并将其保存在Vuex中:
nuxtServerInit({ commit }, { req }) {
const token = this.$cookies.get('test');
commit('auth/setToken', { value: !!token}) }
}
然后,调用路由器中间件并检查 Vuex 是否存在用于重定向用户的 cookie:
export default function ({ store, route, redirect }) {
if (route.path === '/' && store.getters['auth/getToken']) { redirect('/test'); }
}
在本地一切正常,但在部署时没有重定向发生。
我错过了什么?
更多信息
可能相关,我正在使用 firebase 云功能来托管我的 Nuxt ssr 网站:
exports.renderApp = functions.https.onRequest(async (req, res) => {
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
await nuxt.ready(); nuxt.render(req, res);
});
我首先认为这可能是 cookie 问题,但我尝试使用 vanilla js 设置它们,然后(如上实现)我尝试 cookie-universal-nuxt,以及完全绕过 Vuex 并检查 req.headers.cookie
直接在中间件中。结果总是一样的:在开发中有效,在生产中无效。
尝试将您的 cookie 名称更改为 __session
。
您可以在 中找到更多信息。
我想要达到的目标
基本思想是在 Nuxt 路由器中间件中收到 cookie 时将用户发送到另一条路由。
中间件始终在服务器端和客户端调用,并且在开发环境中完美运行。
只在生产中发生的问题是服务器端中间件永远不会收到cookie。
我的尝试
逻辑很简单:nuxtServerInit
在服务器上调用 before 路由器中间件被调用。所以它从用户那里获取cookie并将其保存在Vuex中:
nuxtServerInit({ commit }, { req }) {
const token = this.$cookies.get('test');
commit('auth/setToken', { value: !!token}) }
}
然后,调用路由器中间件并检查 Vuex 是否存在用于重定向用户的 cookie:
export default function ({ store, route, redirect }) {
if (route.path === '/' && store.getters['auth/getToken']) { redirect('/test'); }
}
在本地一切正常,但在部署时没有重定向发生。
我错过了什么?
更多信息
可能相关,我正在使用 firebase 云功能来托管我的 Nuxt ssr 网站:
exports.renderApp = functions.https.onRequest(async (req, res) => {
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
await nuxt.ready(); nuxt.render(req, res);
});
我首先认为这可能是 cookie 问题,但我尝试使用 vanilla js 设置它们,然后(如上实现)我尝试 cookie-universal-nuxt,以及完全绕过 Vuex 并检查 req.headers.cookie
直接在中间件中。结果总是一样的:在开发中有效,在生产中无效。
尝试将您的 cookie 名称更改为 __session
。
您可以在