safari 上的 Cookies,vercel 托管

问题描述 投票:0回答:0

我将我的页面放在 Vercel 托管上。我注意到我无法在 safari 上设置 cookie,我的页面适用于 opera 和 chrome,但在 safari 上我尝试登录时收到 401。我尝试了我发现的每一个提示,但没有任何效果。一开始我有

res.cookie('AuthToken', token, {
        maxAge: 1800 * 1000,
        httpOnly: true,
        sameSite: 'none',
        secure: true,
})

它在 opera 和 chrome 上工作,然后我发现 Safari 不包含 COOKIE 到第二个 CORS 请求 所以我将我的代码更改为:

const token = generateAccessToken(user.toJSON())
res.setHeader('Set-Cookie',
`AuthToken=${token}; max-age=43200; httpOnly; sameSite=none; expires=Wed, 15 Mar 2023 21:17:55 GMT; secure; Domain=xxx.vercel.app`)

它仍然不适用于 safari。 我尝试了小写字母和大写字母,例如 SameSite=None、Secure、Max-Age。我的主文件 server.ts 看起来像这样:

config()
const app = express()

const mongoConnectionString = mongoDb.url
const localhost = process.env.ORIGIN

const corsOptions = {
    origin: localhost,
    credentials: true,
}

mongoose.connect(mongoConnectionString, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
})

const database = mongoose.connection

database.on('error', (error) => {
    console.log(error)
})

database.once('connected', () => {
    console.log('Database Connected')
})

app.set('Access-Control-Allow-Credentials', true)
app.set('Access-Control-Allow-Origin', true)
app.use(cookieParser())
app.use(cors(corsOptions))
app.use(express.json())
app.use(userAccountRouter)
app.use(authenticateToken)
app.use(apiRoute)

这里的主要问题是我没有 macO,我在 safari 上看不到 devtools,我正在检查页面是否在我的手机上工作。解决方案可能很简单,但几天后我就受够了。我的朋友在克隆我的回购协议后添加:

res.setHeader('Set-Cookie', `AuthToken=${token}; HttpOnly; max-age: 43200; SameSite=None; Secure`)
并且它已经开始在他的本地 safari 上工作,当我推送此代码时它仍然无法在在线页面上工作。 如果您想了解有关代码等的更多信息,请输入。我想开始找一份大三学生的工作,想把我的代码放到网上,但这确实阻碍了我。

cookies safari jwt vercel unauthorized
© www.soinside.com 2019 - 2024. All rights reserved.