【问题标题】:Angular Platform-Server Respond with custom http status codeAngular 平台服务器响应自定义 http 状态码
【发布时间】:2017-06-26 12:00:37
【问题描述】:

我正在使用带有 ExpressJS 的 SSR 平台服务器 我想将未找到页面的 HTTP 状态代码从 200 更改为 404

我如下创建一个路由对象

[
  { path: '', component: HomeComponent },
  { path: '**', component: NotFoundComponent, pathMatch: 'full' }
]

它在客户端工作正常,但我不知道如何更改 NodeJS 中的状态代码

我尝试抛出一个错误并在 ExpressJS 中处理它

所以在 NotFoundComponent 中,在 OnInit 中我抛出一个错误,但从角度捕获错误并再次获得 status = 200

有什么想法吗?

【问题讨论】:

标签: angular angular-universal server-side-rendering


【解决方案1】:

我正在使用@nguniversal/express-engine

您可以从 [express-engine] 向您的应用程序注入自定义提供程序 你可以修改渲染结果 你可以处理错误

https://github.com/angular/universal/tree/master/modules/ng-express-engine

但是请求和响应已经被注入

https://github.com/angular/universal/blob/master/modules/ng-express-engine/src/main.ts#L66

请求和响应都是expressjs对象

所以你可以像这样使用它:

import { RESPONSE } from '@nguniversal/express-engine/tokens'

在您的控制器或服务中

constructor(.... OtherDependencies....., @Optional() @Inject(RESPONSE) private readonly res: any) { }

在你的代码中的某个地方,比如 ngOnInit

if(this.res) {
    this.res.status(404)
}

如果你想停止角度

return this.res.end();

或者您可以在此处添加任何其他有效的 ExpressJs 资源代码

======= 更新 =======

这个话题很老了,Angular-Universal 变化很大。但是,这个主题仍然有效,没有变化

expessjs 的新 Angular Universal 文档可以在这里找到 Angular Express Engine

【讨论】:

  • 两个链接都无效。
  • @MarcJ.Schmidt 原始链接已过期,但同样的做法是有效的。添加了新的文档链接
  • 请帮助我获取 Angular 9 404 状态码 - stackoverflow.com/questions/70926063/…
猜你喜欢
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多