আমি এক্সপ্রেস সহ নোডেজে একটি সার্ভার চালাচ্ছি। আমি শিরোলেখ থেকে মুক্তি পেয়েছি বলে মনে হচ্ছে না:
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()
করে।
কেবল রজ্যাকের উত্তরে পিগি-ব্যাক করার জন্য, আপনি কেবল (বিকল্পভাবে) এক্স-চালিত হেডারকে এইরকম অনেক কুলার / কাস্টম হিসাবে পরিবর্তন করতে পারবেন:
app.use(function (req, res, next) {
res.header("X-powered-by", "Blood, sweat, and tears")
next()
})
এক্সপ্রেস v3.0.0rc5 হিসাবে, X-Powered-By
শিরোনাম অক্ষম করার জন্য সমর্থনটি অন্তর্নির্মিত:
var express = require('express');
var app = express();
app.disable('x-powered-by');
উত্স থেকে ( http://expressjs.com/en/api.html#app.set )। এক্সপ্রেস ৪. এক্স-এ কেবল নীচের লাইনটি ব্যবহার করে অ্যাপটি সেট করুন;
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
এক্ষেত্রে এক্স-পাওয়ার্ড সেট করা ডিফল্ট 'এক্সপ্রেস' কে ওভাররাইড করে, সুতরাং আপনার অক্ষম করতে এবং একটি নতুন মান সেট করার দরকার নেই।
কখনও কখনও শীর্ষে উত্তরগুলি কাজ করে না। এটা আমার কেস। আমার কাছে এক্সপ্রেস 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();
});
আড়াল করার জন্য, এক্স-পাওয়ার্ড দ্বারা আপনি নোড .জেএস লাইব্রেরি হেলমেট ব্যবহার করতে পারেন ।
তার জন্য লিঙ্কটি হেলমেট
var helmet = require('helmet');
app.use(helmet.hidePoweredBy());
আমার পক্ষে কোনও স্ট্যান্ডার্ড সলিউশন কর্মীও নয়। অনেক খোঁজাখুঁজির পরে আমি জানতে পারলাম যে আমরা একটি রুটের ফাইল ব্যবহার করেছি যেখানে নতুন এক্সপ্রেস উদাহরণ শুরু হয়েছিল, যা পরে অ্যাপ.ইউজ ব্যবহার করে প্রথমটিতে যুক্ত করা হয়েছিল। কেবলমাত্র এই নতুন এক্সপ্রেস উদাহরণের রুটের জন্য এক্স-পাওয়ার-বাই শিরোনাম উপস্থিত ছিল।
ইস্যুর সরল ধারণা:
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);
সমাধানটি কেবল একটি নতুন এক্সপ্রেস তৈরি করা ছিল a পুরো উদাহরণের পরিবর্তে রাউটার।
const moreRoutes = express.Router();
Https://github.com/visionmedia/express/blob/master/lib/http.js#L72 কোডটি পড়ার ফলে আমার মনে হয় যে আপনাকে এটির সাথে বেঁচে থাকতে হবে কারণ এটি শর্তাধীন বলে মনে হচ্ছে না।
আপনার যদি একটি এনজিন্স / অ্যাপাচি সামনের অংশ থাকে তবে আপনি এটির সাহায্যে এখনও শিরোনামটি সরিয়ে ফেলতে পারেন (অ্যাপাচি জন্য Mod_headers এবং আরও Nginx এর জন্য শিরোনাম)
মুছে ফেলা হিডার কেবল রুট মিডলওয়্যারের ক্ষেত্রে কাজ করবে, কফিস্ক্রিপ্ট উদাহরণ
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 ব্যবহার করছি