【发布时间】:2020-02-23 19:39:50
【问题描述】:
当我在 Zeit Now 上部署我的 Nuxt JS 通用应用程序时,我试图利用 Zeit Cache Doc 中提到的 Zeit 的 Cache-Control 标头。
然后我试图寻找如何在我的 Nuxt JS 应用程序中添加 Cache-Control 标头,幸运的是找到了 this GitHub issue,它解释了同样的事情。
现在我在 Nuxt 应用程序中使用 serverMiddleware 来获取当前登录用户的数据,使用 firebase-admin,所以我想我可以轻松地在我的代码中添加响应头,所以我做到了。在我的/serverMiddleware/handleCookie.js 我有这样的:
const Cookies = require('cookies')
const admin = require('../services/firebase-admin-init')
export default async (req, res, next) => {
res.setHeader('Cache-Control', 's-maxage=1000, stale-while-revalidate')
try {
const authUser = await verifyCookie(req, res)
if (authUser) {
const userData = await fetchUserDetailsFromFirestore(
req,
authUser.uid,
authUser.email_verified
)
if (userData) {
next()
}
} else {
next()
}
} catch (error) {
console.error(error)
}
}
现在最疯狂的是,当我运行 dev 即yarn nuxt 并通过 localhost 检查我的网站时,我可以很容易地在 Chrome 网络工具中看到我添加的标题。
但是当我将我的项目推送到 Zeit Now 以使用 now --prod 进行托管并检查我的实际站点时,我没有看到这个标题。
现在我不明白我是否做错了什么,因为如果我做错了,它不应该出现在 localhost 开发响应标头中。我花了很多天试图解决这个问题,但无处可去。不知道为什么会这样。我还在使用 nuxt/now-builder 进行 Zeit 部署,这是我的 now.json 文件。
{
"version": 2,
"regions": ["bom1"],
"builds": [
{
"src": "nuxt.config.js",
"use": "@nuxtjs/now-builder",
"config": {
"serverFiles": [
"services/firebase-admin-init.js",
"serverMiddleware/**"
]
}
}
]
}
如果有人可以在这件事上提供帮助,那将是非常有帮助的。
【问题讨论】:
-
你添加serverMiddleware: ['/serverMiddleware/handleCookie.js'],
-
@Pablote 当然人......
标签: node.js http-headers nuxt.js vercel