不能摆脱标题X-Powered-By:Express
我在expressj上运行nodejs上的服务器。 我似乎无法摆脱标题:
X-Powered-By:Express
我想知道是否有办法摆脱这个标题,还是我必须忍受它?
在Express> = 3.0.0rc5中:
app.disable('x-powered-by');
这是一个简单的中间件,可以删除早期版本的Express中的标题:
app.use(function (req, res, next) { res.removeHeader("x-powered-by"); next(); });
为了回收rjack的答案,你也可以(可选地)将X-powered-by标头更改(设置)为更酷/自定义的东西,如下所示:
app.use(function (req, res, next) { res.header("X-powered-by", "Blood, sweat, and tears") next() })
从Express 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 )。 在Express 4.X只需使用下面的行设置应用程序;
app.set('x-powered-by', false) // hide x-powered-by header!
这里有一个方便的中间件,你可以放进去换掉X-Powered-By:
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将覆盖默认的“快速”,所以你不需要同时禁用和设置一个新的值。
也许这对于经验丰富的Express用户来说可能是显而易见的,但是这只对我有效:
app.configure(function() { app.use(function (req, res, next) { res.removeHeader("X-Powered-By"); next(); }); });
阅读代码https://github.com/visionmedia/express/blob/master/lib/http.js#L72让我觉得你将不得不忍受它,因为它似乎没有条件。;
如果你有一个nginx / apache的前端,你仍然可以删除它的头(与mod_headers为Apache和标题 – 更多的Nginx)
对于隐藏,X-Powered你可以使用Node.js库头盔 。
该链接是头盔
var helmet = require('helmet'); app.use(helmet.hidePoweredBy());
removeHeader只能在路由中间件,coffeescript例子中使用
fix_headers = (req, res, next) -> res.removeHeader 'X-Powered-By' next() app.get '/posts', fix_headers, (req, res, next) -> ...