X-Powered-By başlığından kurtulamıyorum: Express


168

Express ile nodejs üzerinde bir sunucu çalıştırıyorum. Başlıktan kurtulamıyorum:

X-Powered-By:Express

Bu başlıktan kurtulmanın bir yolu olup olmadığını merak ediyordum ya da onunla yaşamak zorunda mıyım?


@alessioalex bu soru daha fazla görünüme sahiptir (nedenleri daha popüler olursa olsun), bunun yerine bunun başka bir kopyasını yapalım.
Alexei Levenkov

Yanıtlar:


247

Express'te> = 3.0.0rc5:

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

İşte Express'in önceki sürümlerinde başlığı kaldıran basit bir ara katman yazılımı:

app.use(function (req, res, next) {
  res.removeHeader("x-powered-by");
  next();
});

16
app.use(app.router);Çalışması için daha önce yerleştirmeliydim .
Pavel Hlobil

2
App.set ile aynı ('x-powered-by', yanlış);
harrisunderwork

1
Çalışmadı 4.15.2. @harrisunderwork kullanarak app.set()hile yaptı.
Daniel

54

Sadece rjack'in cevabında piggy-back için, X-powered-header'ı (isteğe bağlı olarak) sadece daha soğuk / özel bir şeye değiştirebilir (ayarlayabilirsiniz):

app.use(function (req, res, next) {
  res.header("X-powered-by", "Blood, sweat, and tears")
  next()
})

50

Express v3.0.0rc5'ten itibaren, X-Powered-Bybaşlığı devre dışı bırakma desteği yerleşiktir:

var express = require('express');

var app = express();
app.disable('x-powered-by');


10

İşte X-Powered-By'ı değiştirmek için bırakabileceğiniz kullanışlı bir ara katman yazılımı:

function customHeaders( req, res, next ){
  // Switch off the default 'X-Powered-By: Express' header
  app.disable( 'x-powered-by' );

  // OR set your own header here
  res.setHeader( 'X-Powered-By', 'Awesome App v0.0.1' );

  // .. other headers here

  next()
}

app.use( customHeaders );

// ... now your code goes here

Bu durumda X-Powered tarafından ayarlanması varsayılan 'Express'i geçersiz kılar, bu nedenle hem devre dışı bırakmanız hem de yeni bir değer ayarlamanız gerekmez.


3

Belki bu daha deneyimli Express kullanıcıları için açık olabilir, ancak sadece bu benim için çalıştı:

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

3

Bazen tepedeki cevaplar işe yaramaz. Benim durumum bu. Express 4.17.1 sürümüm var ve hiç kimse yanıt vermiyor. Böylece kendi çözümümü icat ettim:

let app = express();

app.use((req, res, next) => {
  const send = res.send;
  res.send = (data) => {
    res.removeHeader('X-Powered-By');
    return send.call(res, data);
  };

  next();
});

Express sürüm 4.16.3 için de çalıştı. Başka hiçbir çözüm işe yaramadı.
Farhan Ghumra

1
benim için de çalıştı teşekkürler!
Fernix

2

Gizleme için, X-Powered By tarafından Düğüm .js Kütüphane kask kullanabilirsiniz .

Bunun için kask

var helmet = require('helmet');
app.use(helmet.hidePoweredBy());

Bunun için bir kütüphane ekler misiniz?
Yüce deve Moha

evet biz kask kütüphane kullanmak zorunda. expressjs fremework kullanıyorsanız o zaman bu kod app.disable ("x-powered-by") ile kütüphane önleyebilirsiniz;
arjun kori

2

Standart çözümlerin hiçbiri benim için çalışmıyor. Çok fazla arama yaptıktan sonra yeni bir ekspres örneğinin başlatıldığı bir rota dosyası kullandığımızı öğrendim. Sadece bu yeni ekspres örnekteki rotalar için X-Powered-By başlığı mevcuttu.

Konuyla ilgili basit görünüm:

const app = express();
app.disable("x-powered-by");
app.get("/ping", (req, res) => res.send("Pong")); // <-- no X-Powered-By header

const moreRoutes = express();
moreRoutes.get("/ping", (req, res) => res.send("Pong")); // <-- X-Powered-By header still present

app.use("/api/v2", moreRoutes);

Çözüm basitçe yeni bir ifade oluşturmaktı.Tüm bir örnek yerine yönlendirici.

const moreRoutes = express.Router();


0

removeHeader yalnızca yol ara yazılımında çalışır, kahve örneği

fix_headers =  (req, res, next) ->
    res.removeHeader 'X-Powered-By'
    next()

app.get '/posts', fix_headers, (req, res, next) ->
  ...

0

Bunun dışında hiçbiri benim için çalışmadı (başka bir parametre eklemeniz gerekiyor):

app.use(helmet.hidePoweredBy({ setTo: 'guesswhat' }))

Express ^ 4.17 kullanıyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.