在页面刷新和 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 的计数为零的主要内容,如果未能解决你的问题,请参考以下文章
nginx - django 2 -angular 6 / 角度路由在重新加载页面后得到 404