Я пробовал использовать это, но это не сработало: app.disable("x-powered-by");
и я прочитал это сообщение:
как удалить X-Powered-By в ExpressJS
Не могу избавиться от заголовка X-Powered-By: Express
Iam using "express": "^4.16.4" as backend. in frontend iam using "react": "^16.7.0" Single Page App.
ОБНОВИТЬ
express.js в порту 5000 react.js в порт 3000
когда я пытаюсь попасть по этому URL-адресу, http: // локальный: 5000 / api / продуктx-powered-by :express исчезает.
в моем приложении реакции, когда я пытаюсь нажать API http: // локальный: 5000 / api / продукт, он снова покажет x-powered-by:express.
Каждый раз, используя API http: // локальный: 5000 / api / продукт, что означает сервер node.js / express, я получал x-powered-by : express
но когда я пытаюсь использовать console.info(app);, я получаю следующее:
settings:
[0] { 'x-powered-by': false,
[0] etag: 'weak',
[0] 'etag fn': [Function: generateETag],
[0] env: 'development',
[0] 'query parser': 'extended',
[0] 'query parser fn': [Function: parseExtendedQueryString],
[0] 'subdomain offset': 2,
[0] 'trust proxy': false,
[0] 'trust proxy fn': [Function: trustNone],
[0] view: [Function: View],
[0] views: 'D:\\WEBSITE\\hammerstout_nodejs_client\\views',
[0] 'jsonp callback name': 'callback' } },
'x-powered-by': false, должно ли это работать?
Код
import express from 'express';
import bodyParser from 'body-parser';
// import passport from 'passport';
import connection from './config/conn';
import { CategoryRoutes,ProductRoutes } from './modules';
import session from 'express-session';
const app = express();
app.disable("x-powered-by");
console.info(app);
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}))
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// app.use(passport.initialize());
app.use('/api/', [CategoryRoutes, ProductRoutes]);
const port = process.env.PORT || 5000;
app.listen(port, (err) => {
if (err){
console.info(err);
}else{
console.info(`Server running on port ! ${port}`);
}
});
Если вы думаете, что у вас все заработало, то это не потому, что app.disable ("x-powered-by"); вдруг работает в какой-то версии Express. Это потому, что вы смотрите на свое приложение без прокси. Если вы, например, используете React и его прокси для передачи трафика API, этот прокси добавит заголовок, даже если вы отключили его на своем сервере Express.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


app.disable("x-powered-by"); - это правильный способ отключить настраиваемый заголовок в экспресс 4.16.4. Вот рабочий пример с экспресс-версией 4.16.4 и узлом 10.14.2:
const express = require('express');
const app = express();
app.disable("x-powered-by");
app.get('/', function(req, res) {
res.status(200);
res.send("hello\n\n");
res.end();
});
app.listen(9876, function() {
console.info('ready');
});
запустив это из командной строки, затем вызов curl -i http://localhost:9876/ приведет к следующему выводу:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 7
ETag: W/"7-RYgBn9PSVn8wOBXbat/kibLuX5I"
Date: Mon, 07 Jan 2019 03:24:09 GMT
Connection: keep-alive
hello
Вероятно, это промежуточный прокси. Отметьте другой ответ
У меня такой же эффект с моим угловым приложением. Я использую прокси-сервер angular (который в конечном итоге является webpack-dev-сервером) для доступа к моему серверу (избегая проблем с CORS).
Ответы не содержат заголовок x-powered-by, когда я обращаюсь к REST-API на моем сервере (через порт 3000) с помощью почтальона или браузера. Доступ к тому же серверу с моим приложением angular (на порту 4200) с использованием прокси-сервера показывает заголовок.
Мои выводы таковы: webpack-dev-server использует Express в качестве основы; поэтому я предполагаю, что "ошибочный" заголовок исходит от прокси-сервера, а не от вашего сервера на порту 3000.
Я думаю, вы на месте. По этой причине люди все еще видят заголовок после его отключения.
У меня была такая же проблема с v4.16. *, Но
app.disable("x-powered-by");, похоже, теперь снова работает правильно в v4.17.1.