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?
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?
Yanıtlar:
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();
});
app.use(app.router);
Çalışması için daha önce yerleştirmeliydim .
4.15.2
. @harrisunderwork kullanarak app.set()
hile yaptı.
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()
})
Express v3.0.0rc5'ten itibaren, X-Powered-By
başlığı devre dışı bırakma desteği yerleşiktir:
var express = require('express');
var app = express();
app.disable('x-powered-by');
Kaynaktan ( http://expressjs.com/en/api.html#app.set ). Express 4.X'te sadece aşağıdaki satırı kullanarak uygulamayı ayarlayın;
app.set('x-powered-by', false) // hide x-powered-by header!
İş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.
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();
});
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());
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();
Https://github.com/visionmedia/express/blob/master/lib/http.js#L72 kodunu okumak, koşullu görünmediği için onunla yaşamak zorunda olduğunuzu düşündürüyor.
Bir nginx / apache ön ucunuz varsa üstbilgiyi yine de kaldırabilirsiniz (apache için mod_headers ve nginx için header-more ile)
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) ->
...
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