如何在响应中同时发送 cookie 和重定向? (无服务器框架)
how to send cookie and redirect at same time in response ? (serverless framework)
下面是我用来在单个响应中设置 cookie 和重定向 link 的代码,但只有其中一个可以工作。如果 statusCode 为 301/302,则重定向正在进行但未设置 cookie。如果 statusCode 为 200,则设置了 cookie,但重定向不起作用。有谁知道如何在单个请求中同时使用两者?我应该更改 StatusCode 一些状态代码不允许设置 cookie 吗?
const response = {
statusCode: 302,
headers: {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Credentials" : true,
"Set-Cookie": 'data='+data,
"Location":"http://localhost:8040/#/dashboard",
},
body: JSON.stringify({
message: data,
}),
};
callback(null, response);
我正在使用 nodejs 的无服务器框架。
这是回复的截图
但在 cookie 中注明是 der
浏览器不会接受与请求发送到的域完全不同的 cookie。因此,如果您要重定向到新域,则无法为该新域设置 cookie。
Cookie 的 domain
部分仅适用于具有相同根域但仅子域不同的域。
本文摘自RFC 6265:
The user agent will reject cookies unless the Domain attribute
specifies a scope for the cookie that would include the origin server.
For example, the user agent will accept a cookie with a Domain
attribute of "example.com" or of "foo.example.com" from
foo.example.com, but the user agent will not accept a cookie with a
Domain attribute of "bar.example.com" or of "baz.foo.example.com".
所以,回顾一下。您不能从服务器为完全不同的域设置 cookie,并且 cookie 中的 domain
属性也不会保存您。在特殊情况下,您可以为仅在子域中不同的不同域设置 cookie(例如共享相同的根域)。
仅供参考,如果您的 cookie 确实设置正确,您必须更改此设置:
"Set-Cookie": 'data='+data,
对此:
"Set-Cookie": 'data=' + JSON.stringify(data),
正确序列化您的对象。
您将 cookie 设置为 data=[Object object]
而不是实际信息。
您需要在该字符串中序列化您的数据对象。
下面是我用来在单个响应中设置 cookie 和重定向 link 的代码,但只有其中一个可以工作。如果 statusCode 为 301/302,则重定向正在进行但未设置 cookie。如果 statusCode 为 200,则设置了 cookie,但重定向不起作用。有谁知道如何在单个请求中同时使用两者?我应该更改 StatusCode 一些状态代码不允许设置 cookie 吗?
const response = {
statusCode: 302,
headers: {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Credentials" : true,
"Set-Cookie": 'data='+data,
"Location":"http://localhost:8040/#/dashboard",
},
body: JSON.stringify({
message: data,
}),
};
callback(null, response);
我正在使用 nodejs 的无服务器框架。
这是回复的截图
但在 cookie 中注明是 der
浏览器不会接受与请求发送到的域完全不同的 cookie。因此,如果您要重定向到新域,则无法为该新域设置 cookie。
Cookie 的 domain
部分仅适用于具有相同根域但仅子域不同的域。
本文摘自RFC 6265:
The user agent will reject cookies unless the Domain attribute specifies a scope for the cookie that would include the origin server. For example, the user agent will accept a cookie with a Domain attribute of "example.com" or of "foo.example.com" from foo.example.com, but the user agent will not accept a cookie with a Domain attribute of "bar.example.com" or of "baz.foo.example.com".
所以,回顾一下。您不能从服务器为完全不同的域设置 cookie,并且 cookie 中的 domain
属性也不会保存您。在特殊情况下,您可以为仅在子域中不同的不同域设置 cookie(例如共享相同的根域)。
仅供参考,如果您的 cookie 确实设置正确,您必须更改此设置:
"Set-Cookie": 'data='+data,
对此:
"Set-Cookie": 'data=' + JSON.stringify(data),
正确序列化您的对象。
您将 cookie 设置为 data=[Object object]
而不是实际信息。
您需要在该字符串中序列化您的数据对象。