Netlify 函数中的奇怪 cookie 行为

问题描述

我在 Netlify 上托管的 Gatsby 网站上看到了一些奇怪的 cookie 行为。在我的 Netlify 函数中,我有时会收到这样的 cookie:

"headers": {
  "cookie": "__stripe_mid=someId,nf_jwt=someId,__stripe_sid=someId",/* ... */
},

而不是这样(用分号分隔符代替逗号):

"headers": {
  "cookie": "__stripe_mid=someId; nf_jwt=someId; __stripe_sid=someId",

当它像第一个例子一样发送时,它会导致我的 cookie.parse() 代码偶尔给我一个带有单个键的对象,而值是其余 cookie 的串联。像这样:

{
  __stripe_mid: "someId,__stripe_sid=someId"
}

我可以确认,在 Chrome DevTools 中,cookie 是使用分号分隔符发送的(应该如此)。但是当它们最终被传递给 Netlify 函数时,它们已更改为逗号。 Netlify 函数示例:

export async function handler (event) {
  console.log(event.headers.cookies) // Comma separated cookies
}

我似乎无法弄清楚是什么导致了这种情况。有没有人知道为什么我会在不同时间从浏览器接收不同格式的 Cookie?

解决方法

这是他们的错误,现在应该修复:

https://github.com/netlify/netlify-plugin-nextjs/issues/255

https://answers.netlify.com/t/bug-netlify-functions-event-headers-cookie-sometimes-suddenly-used-comma-instead-of-semicolon/36793/12

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...