在页面刷新和 url 重写的角度路由后,cookie 的计数为零

Posted

技术标签:

【中文标题】在页面刷新和 url 重写的角度路由后,cookie 的计数为零【英文标题】:count of cookies is zero after page refresh and angular routing with url rewrite 【发布时间】:2018-07-29 10:22:36 【问题描述】:

我正在使用带有 .net core 2.0 和 angular 4 的 angular Spa 模板。

页面刷新后我的 cookie 计数为零。事实上,页面刷新后我在 HttpContext 中没有得到任何东西。

这是我在浏览器中的 cookie。

如果我使用角度系统菜单,它工作正常。

现在,这是我在后端获取 cookie 的代码。

    private string GetCookie(HttpContext httpContext, string cookieName)
    
        var rqstCookie = httpContext.Request.Cookies[cookieName];

        return !string.IsNullOrEmpty(rqstCookie) ? rqstCookie : null;
    

一件重要的事情是,当我单击菜单时,它会加载组件和服务文件,然后向 C# 控制器请求所有标题和选项。 但是当我刷新页面时,整个过程都会被跳过,所以我认为这个选项没有传递到后端,这就是我的 cookie 为空的原因。

在我的其他应用程序中,我使用 url rewrite 来解决相同类型的问题,它在那里工作,但在这里因为这个应用程序是 angular spa 模板,url rewrite 不起作用。

我也尝试设置 url 重写,就像我在旧应用程序中所做的那样,但它给了我错误。这是我关注的 url 重写模块的链接。 https://***.com/a/26152011/5816119

我已将 cookie 更新为会话 cookie,但它也无法正常工作。

您能否指导我如何在用户刷新页面时获取所有 cookie 和其他数据。谢谢...

【问题讨论】:

你可以使用localStorage.. 我不能,我只能用 cookie 运行它.. 【参考方案1】:

在编写cookie时尝试使用此代码指定cookie何时过期

 option.Expires = DateTime.Now.AddDays(x);

 Response.Cookies.Append(cookiename, cookievalue, option);

你可以将AddDays(x)修改为你想要的天数

【讨论】:

正在使用角度,每次应用程序启动时,令牌都会在设置过期时间后变为空。【参考方案2】:

这是一个角度问题。

当我在路由模块中添加APP_BASE_HREF 时,它突然开始工作了。

https://***.com/a/34535256/5816119

这是我的代码,

import  APP_BASE_HREF  from "@angular/common";

export const sharedConfig: NgModule = 
    bootstrap: [ AppComponent ],
    declarations: [
        AppComponent,
        ...
        ],
    imports: [
        HttpModule,
        ...,
        RouterModule.forRoot([
             path: "", redirectTo: "home", pathMatch: "full" ,
             path: "**", redirectTo: "home" 
        ],  useHash: true ),
    ],
    providers: [
         provide: APP_BASE_HREF, useValue: '/' ,
    ],
;

所以,它基本上是路由器端的一种散列技术,似乎我的应用程序中也缺少这个提供程序。

【讨论】:

也应该重新服务或重新构建项目,热重新加载而不是重新构建APP_BASE_HREF提供程序

以上是关于在页面刷新和 url 重写的角度路由后,cookie 的计数为零的主要内容,如果未能解决你的问题,请参考以下文章

vue登录刷新回到首页的问题

nginx - django 2 -angular 6 / 角度路由在重新加载页面后得到 404

如何以角度2刷新页面

解决React路由URL中hash(#)部分的显示 browserHistory打包后浏览器刷新页面出现404的问题

vue通过路由传值及在页面刷新后如何保存值

lighttpd URL重写