मैं एक्सप्रेस के साथ नोडज पर एक सर्वर चला रहा हूं। मैं शीर्ष लेख से छुटकारा नहीं पा सकता:
X-Powered-By:Express
मैं सोच रहा था कि क्या इस हेडर से छुटकारा पाने का कोई तरीका है या मुझे इसके साथ रहना है?
मैं एक्सप्रेस के साथ नोडज पर एक सर्वर चला रहा हूं। मैं शीर्ष लेख से छुटकारा नहीं पा सकता:
X-Powered-By:Express
मैं सोच रहा था कि क्या इस हेडर से छुटकारा पाने का कोई तरीका है या मुझे इसके साथ रहना है?
जवाबों:
एक्सप्रेस में = = 3.0.0rc5:
app.disable('x-powered-by');
यहां एक साधारण मिडलवेयर है जो एक्सप्रेस के पुराने संस्करणों में हेडर को हटाता है:
app.use(function (req, res, next) {
res.removeHeader("x-powered-by");
next();
});
app.use(app.router);
इसे काम करने के लिए पहले रखना था ।
4.15.2
। @harrisunderwork समाधान का उपयोग करके app.set()
चाल चली गई ।
Rjack के जवाब पर सिर्फ गुल्लक के लिए, आप भी (वैकल्पिक रूप से) एक्स-पावर्ड-हेडर से इस तरह के कुछ कूलर / कस्टम को बदल सकते हैं (सेट):
app.use(function (req, res, next) {
res.header("X-powered-by", "Blood, sweat, and tears")
next()
})
स्रोत से ( http://expressjs.com/en/api.html#app.set )। एक्सप्रेस 4.X में बस नीचे लाइन का उपयोग करके ऐप सेट करें;
app.set('x-powered-by', false) // hide x-powered-by header!
यहां एक आसान मिडलवेयर है जिसे आप एक्स-पावर्ड-बाय-स्वैप कर सकते हैं:
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
इस स्थिति में X-Powered सेट करना डिफ़ॉल्ट 'एक्सप्रेस' को ओवरराइड करेगा, इसलिए आपको दोनों को अक्षम करने और एक नया मान सेट करने की आवश्यकता नहीं है।
कभी-कभी शीर्ष पर उत्तर काम नहीं करते हैं। यह मेरा मामला है। मेरे पास एक्सप्रेस 4.17.1 है और कोई भी जवाब काम नहीं करता है। इसलिए मैंने अपने हल का आविष्कार किया:
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();
});
छुपाने के लिए, X- Powered by आप नोड .js लाइब्रेरी हेलमेट का उपयोग कर सकते हैं ।
इसके लिए लिंक हेलमेट है
var helmet = require('helmet');
app.use(helmet.hidePoweredBy());
मेरे लिए कोई भी मानक समाधान कार्यकर्ता नहीं है। बहुत खोज के बाद मुझे पता चला कि हमने एक रूट फ़ाइल का उपयोग किया है जहाँ एक नया एक्सप्रेस इंस्टेंस शुरू किया गया था, जिसे बाद में app.use का उपयोग करके पहले जोड़ा गया था। केवल इस नए एक्सप्रेस उदाहरण के लिए एक्स-पावर्ड बाय हेडर में मार्गों के लिए मौजूद था।
मुद्दे का सरल दृष्टिकोण:
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);
समाधान केवल एक नई एक्सप्रेस बनाने के लिए था। एक पूरे उदाहरण के बजाय राउटर।
const moreRoutes = express.Router();
कोड को पढ़कर https://github.com/visionmedia/express/blob/master/lib/http.js#L72 मुझे लगता है कि आपको इसके साथ रहना होगा क्योंकि यह सशर्त नहीं लगता है।
यदि आपके पास एक nginx / apache फ्रंटेंड है, तो आप इसके साथ हेडर को हटा सकते हैं (Apache के लिए mod_headers और nginx के लिए हेडर-अधिक)
removeHeader केवल रूट मिडलवेयर, कॉफ़ीस्क्रिप्ट उदाहरण में काम करेगा
fix_headers = (req, res, next) ->
res.removeHeader 'X-Powered-By'
next()
app.get '/posts', fix_headers, (req, res, next) ->
...
इसमें से किसी ने भी मेरे लिए काम नहीं किया, इसके अलावा (आपको एक और पैरामीटर जोड़ने की आवश्यकता है):
app.use(helmet.hidePoweredBy({ setTo: 'guesswhat' }))
मैं एक्सप्रेस ^ 4.17 का उपयोग कर रहा हूं