Express 浏览器中未设置Cookie-CORS/端口问题
上下文: 我只是使用Lerna拆分了现有的Next.js/Express应用程序,将Next.js服务器(在Express 浏览器中未设置Cookie-CORS/端口问题,express,cookies,axios,next.js,lerna,Express,Cookies,Axios,Next.js,Lerna,上下文: 我只是使用Lerna拆分了现有的Next.js/Express应用程序,将Next.js服务器(在localhost:3000上为前端服务)和我的Express服务器(在localhost:4000上为API服务)分开。因此,我必须使用默认的{baseUrl:localhost:4000}创建一个axios实例,因此我的相对路径调用将继续工作(即axios.post('/api/auth/login',{…}))。以前,当服务器同时提供API和Nextjs应用程序时,这一切都正常工作
localhost:3000
上为前端服务)和我的Express服务器(在localhost:4000
上为API服务)分开。因此,我必须使用默认的{baseUrl:localhost:4000}
创建一个axios
实例,因此我的相对路径调用将继续工作(即axios.post('/api/auth/login',{…})
)。以前,当服务器同时提供API和Nextjs应用程序时,这一切都正常工作
问题:
在此切换之后,我的身份验证流不再正常工作。正常登录后,页面刷新将擦除用户会话的所有内存。据我所知,饼干还没有准备好。我在我的开发工具中看不到它,当应用程序进行后续调用时,没有cookie存在
当我的应用程序挂载时,它会调用api/me
,查看用户是否已登录。如果是,它将以用户信息响应,以用户信息补充应用程序。如果他们不是,它不会做任何特别的事情。对/api/me
的请求不再包含登录调用设置的持久cookie。(开发工具显示从原始登录请求中按预期返回的Set Cookie
头)
可能有用的信息:
- 根据我运行我的应用程序的方式(在VSCode中调试与在终端中同时运行
命令),我将得到一个CORS错误。我正在使用没有配置的THREN dev
包:cors
app.use(cors())
- 应用程序装载时对
的调用如下所示:/api/me
- 我正在使用此函数设置cookie
- 这是我不熟悉的cors政策
- 这是因为
()sameSite
// API.js
`export default axios.create({baseURL: 'http://localhost:4000'})`
// app.js
import API from 'API'
API({
method: 'get',
url: '/api/me'
})
.then(r => {
//...
})
function setCookie(res, token, overwrite, sameSite = true) {
res.cookie(cookieName, token, {
httpOnly: true,
sameSite: sameSite,
secure: process.env.NODE_ENV === 'production',
expires: new Date(Date.now() + cookieExpiration),
overwrite: !!overwrite
})
}