【问题标题】:How to get cookie on the server side Angular Universal如何在服务器端 Angular Universal 上获取 cookie
【发布时间】:2017-12-26 07:00:56
【问题描述】:

我有一个带有服务器端渲染的 Angular 4 应用程序。在服务器端我有这样的代码:

const res: express.Response = this.injector.get('RESPONSE');
res.cookie('Name', 'Value');

那么,如何在组件中访问这些 cookie? 我在组件中注入 Express RESPONSE,但没有 cookie。

@Component({
  selector: 'app-my',
  templateUrl: './my.component.html',
  styleUrls: ['./my.component.scss']
})
export class MyComponent implements OnInit {

  constructor(@Inject(PLATFORM_ID) private platformId: Object, private injector: Injector) {
  }
  ngOnInit() {
    if (isPlatformServer(this.platformId)) {
      let CircularJSON = require('circular-json');
      let res: express.Response = this.injector.get('RESPONSE');
      console.log("RESPONSE = " + CircularJSON.stringify(res));
    }
  }
}

问题是在服务器端获取 cookie,然后在浏览器中设置它们。

【问题讨论】:

  • 您找到解决方案了吗?我还坚持将 cookie 从通用响应传递给客户端
  • @dionisis-k 我在 /src/app/shared/for-storage/ 中找到了这个 github.com/Angular-RU/angular-universal-starter 的解决方案。 brouser 和 server 有两种获取 cookie 的实现。在 app.module.ts 文件中,您应该像这样描述提供程序块:{provide: AppStorage, useClass: CookieStorage} 并在 app.server.module.ts 文件中这样描述:{provide: AppStorage, useClass: UniversalStorage} 然后在组件中,您想在构造函数中使用此存储的位置使用 @Inject(AppStorage) private appStorage: Storage.
  • 哦,很棒的解决方案。顺便说一句,我也为您的示例找到了解决方案。确保提供 res app.get('*', (req, res) => { res.render('index', {req, res}); });res.cookie( name, value) 有效。注意我使用注入令牌而不是注入器

标签: javascript angular express cookies


【解决方案1】:

您是否尝试使用此 ngx-cookie-service library 访问 cookie?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2017-04-27
    • 2018-12-29
    • 2021-06-11
    • 1970-01-01
    • 2017-09-10
    相关资源
    最近更新 更多