【问题标题】:How do I get the domain originating the request (of the front-end) in NestJS如何在 NestJS 中获取发起(前端)请求的域
【发布时间】:2020-07-10 18:52:28
【问题描述】:

我的问题类似于以下内容:How do I get the domain originating the request in express.js? 但我使用的是 NestJS。 我发现 express.js 可能有一个很好的答案,但我无法将它应用到 NestJS(req.origin 未定义)。

谁能帮我解决这个问题? 提前谢谢你。

【问题讨论】:

  • 你如何尝试访问请求?

标签: nestjs


【解决方案1】:

来自docs,您可以访问Nestjs中的请求对象。

Nest 提供对底层平台请求对象的访问 (默认快递)。我们可以通过以下指令访问request object 通过将 @Req() 装饰器添加到处理程序的嵌套来注入它 签名。

@Controller('cats')
export class CatsController {
  @Get()
  findAll(@Req() request: Request): string {
    return 'This action returns all cats';
  }
}

【讨论】:

    【解决方案2】:

    我找到了问题的答案,我们可以使用@Host('origin')。只有当我们从真正的前端调用后端服务器时,该值才存在,而不是从 Postman 或直接从浏览器调用后端 url。 感谢 Moazzam Arif 的帮助,请允许使用您的示例在下面显示我的答案。

    @Controller('cats')
    export class CatsController {
      @Get()
      findAll(@Host('origin') origin: string): string {
        return 'This action returns all cats';
      }
    }
    

    【讨论】:

    • 如果您在 Postman 中设置 Origin 标头,它将起作用
    • nestjs中没有@Host装饰器..是自定义装饰器吗?
    【解决方案3】:

    在我的项目中,下面的代码有效。

    async login (@Headers() headers) {
      console.log('AUTHH LOGG', headers.host)
    }

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 2020-10-26
      • 2016-05-20
      • 2019-09-15
      • 2013-09-14
      • 2018-08-03
      • 2015-12-24
      • 2022-12-19
      • 2014-07-23
      相关资源
      最近更新 更多