如何在响应中同时发送 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] 而不是实际信息。

您需要在该字符串中序列化您的数据对象。