7

当我创建它时,我想在我的 cookie 中设置安全标志。我想我有解决方案,但我想确定以继续。我使用ngx-cookie-service来设置我的 cookie。

这是我的代码:

const now = new Date();
now.setHours(now.getHours() + 8);
const secureFlag = true;
this.cookieService.set('usertype', 'agent', now, '/', '/', secureFlag);

问题是我不知道是否必须像这样声明第 4 和第 5 个参数,因为如果我不声明它们会显示错误。

例如我试试这个:

const now = new Date();
now.setHours(now.getHours() + 8);
const secureFlag = true;
this.cookieService.set('usertype', 'agent', now, secureFlag);

它警告我Argument of type 'true' is not assignable to parameter of type 'string'

当我不想定义它们时,是否必须使用'/'forpath和参数?domain

4

6 回答 6

4

SameSite这将起作用,如果您在使用 Google Chrome 时遇到问题,也可以在 Google Chrome 上测试默认禁用cookie。

将此粘贴到您的浏览器中,它将带您进入 SameSite 设置并禁用。

chrome://flags/#same-site-by-default-cookies

this.cookieService.set('sessionuser', username, 1 , '/', 'localhost', false, "Lax" );
于 2020-08-07T13:51:35.193 回答
2

CookieService 的 get 方法支持以下参数:

    /**
     * @param name     Cookie name
     * @param value    Cookie value
     * @param expires  Number of days until the cookies expires or an actual `Date`
     * @param path     Cookie path
     * @param domain   Cookie domain
     * @param secure   Secure flag
     * @param sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `None`
     */
    set(name: string, value: string, expires?: number | Date, path?: string, domain?: string, secure?: boolean, sameSite?: 'Lax' | 'None' | 'Strict'): void;

错误Argument of type 'true' is not assignable to parameter of type 'string' 是因为您发送的是安全参数而不是路径。

于 2020-02-15T17:26:50.937 回答
2

如果您正在开发中并且您没有 ssl,则secureFlag: true可能无法正常工作。

例如。

this.cookieService.set('cookieName', 'somevalue', 1, '/','localhost', false, "Strict");

这应该工作:)

于 2020-04-22T22:15:40.897 回答
1

这篇文章是否解决了同样的问题?我认为那里的答案可以帮助你。 Angular4x:带有过期参数的 ngx-cookie-service

于 2019-09-11T09:17:20.270 回答
1

我认为您已经在您的一条评论中解决了,因为我尝试并成功的解决方案是,只添加最后一个参数(Lax),但不是必需的:

this.cookieService.set('usertype', 'agent', now, null, null, secureFlag, 'Lax');

我尝试在路径参数中添加“/”,这仅适用于“路径”,但将两者都设置为 null 即可。

于 2020-06-24T19:21:49.497 回答
1

您可以尝试以下一种(“Lax”/“Strict”):-

常量安全标志 = 真;this.cookieService.set('cookieName', 'somevalue', undefined, undefined,'undefined, secureFlag, "Strict");

于 2020-08-11T12:33:34.157 回答