【问题标题】:remove header X-powered-by Express using @types/express使用 @types/express 删除标题 X-powered-by Express
【发布时间】:2023-02-01 18:06:38
【问题描述】:

我必须删除 X-powered-by Express 标头,我找到了这些解决方案

app.disable('x-powered-by');

或者

app.use(function (req, res, next) {
  res.removeHeader("X-Powered-By");
  next();
});

但是在这个项目中我们不以基本方式使用 express,我们在多个文件中以这种方式导入 Express

import {Express} from 'express'; // @types/Express

然后我们打电话给Express.multer.file

我是这个项目的新手,也是后端开发的新手,那么如何使用这种方式而不是基本方式删除此标头?

【问题讨论】:

  • 这回答了你的问题了吗? Can't get rid of header X-Powered-By:Express
  • 没有,因为整个应用程序中没有 const app = express()
  • 那你在用什么?在某些时候你需要有那个才能使用 express,或者你正在使用不同的框架?
  • 我们使用 express 和 typescript 以及 loopback
  • 你的入口文件是什么?喜欢main.js

标签: node.js typescript express backend loopbackjs


【解决方案1】:

您仍然可以以“基本”方式使用它:

import express, { Express } from 'express';

const app: Express = express();

app.disable('x-powered-by');

【讨论】:

  • 当我们导入 {Express} 时在所有文件上?
  • @zedArt 不,但至少在一个文件中,您的项目将创建一个 Express 应用程序。只需使用Express类型, 不足以创建服务器。
【解决方案2】:

您可以像这样删除 sequence.ts 文件中的标头。

export class MySequence extends MiddlewareSequence {
   async handle(context: RequestContext) {
      const res = context.response;
      res.removeHeader('X-Powered-By');

      await super.handle(context);
   }
}

或使用 helmet 包来确保标题的安全性。因此删除标头告诉软件是如何开发的

【讨论】:

  • 我有一个 sequence.ts 文件,里面只有这个:
  • 当我在邮递员中测试任何端点时,我看不到这个标题
【解决方案3】:

所以,我找到的解决方案是在loopback documentation - Express settings

我只是将其添加到我的其余配置对象中:

  const config = {
    rest: {
      expressSettings: {
        'x-powered-by': false,
      },
      ...
      ...
    }
   }

【讨论】:

    【解决方案4】:

    如果有人在为tinyhttp寻找禁用它的方法:

    import { App } from '@tinyhttp/app';
    
    const app = new App({
      settings: {
        xPoweredBy: false
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多