X-Powered-By 헤더를 제거할 수 없습니다.표현
나는 express로 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
헤더는 다음과 같이 기본 제공됩니다.
const express = require('express');
const app = express();
app.disable('x-powered-by');
Express.js 문서:
출처(http://expressjs.com/en/api.html#app.set) .익스프레스 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 by를 설정하면 기본 'Express'가 재정의되므로 사용하지 않도록 설정하고 새 값을 설정할 필요가 없습니다.
저도 표준 솔루션 담당자가 없습니다.검색을 많이 한 후에 새로운 익스프레스 인스턴스가 시작된 경로 파일을 사용한다는 것을 알게 되었고, 나중에 app.use를 사용하여 첫 번째 인스턴스에 추가되었습니다.이 새 고속 인스턴스의 경로에 대해서만 X-Powered-By 헤더가 있습니다.
문제에 대한 단순한 관점:
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();
상단에 있는 답변이 작동하지 않을 때도 있습니다.이건 제 사건입니다.Express 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
헬멧 라이브러리를 사용할 수 있습니다.
var helmet = require('helmet');
app.use(helmet.hidePoweredBy());
아마도 이것은 숙련된 Express 사용자들에게 분명할 수 있지만, 저에게는 오직 이것만이 효과가 있었습니다.
app.configure(function() {
app.use(function (req, res, next) {
res.removeHeader("X-Powered-By");
next();
});
});
참고: 답변은 게시물에 흩어져 있으며, 이는 편집을 위한 것이며, 제가 작성한 몇 가지 추가 사항입니다.그들은 모두 테스트를 받았습니다.
참고 2: 중요한 것이 누락되었습니다. 개발 서버, Be Angular, React 또는 Webpack dev 서버를 사용하여 프런트 엔드에서 헤더를 확인하는 경우에도 헤더를 볼 수 있습니다.이는 webpack-dev-server가 실제로 Express 서버이고 현재 표시되는 것은 해당 응용 프로그램에서 제공되는 헤더이기 때문입니다.다음 옵션 중 하나를 사용하면 백엔드에서 헤더를 보내지 않습니다.
이렇게 하는 방법은 여러 가지가 있습니다.
- 안 함 용
"X-powered-by"
기본적으로 Express 옵션을 사용합니다.
import express from 'express'
const app = express()
app.disable('x-powered-by')
// app.use(...)
미들웨어를 사용하여 각 요청에서 제거:
- 제거합니다.
X-powered-by
import express from 'express'
const app = express()
app.use(function (req, res, next) {
res.removeHeader("X-Powered-By");
next();
});
X-powered-by
를 부여합니다.
import express from 'express'
const app = express()
app.use(function (req, res, next) {
res.header("X-powered-by", "not-Express")
next()
})
헬멧을 사용하여 제거하고 10개의 다른 HTTP 권장 헤더를 구성합니다("은탄은 아니지만 도움이 될 수 있습니다!").
- 기본 설정(11개의 HTTP 헤더 모두 적용)
import express from 'express'
import helmet from 'helmet'
const app = express()
app.use(helmet())
- 제거하기만 하면 됩니다.
X-powered-by
import express from 'express'
import helmet from 'helmet'
const app = express()
app.use(helmet.hidePoweredBy());
"노트 2" 관련:
hot reload에 webpack-dev-server를 사용하는 경우에도 이 헤더가 표시됩니다.이는 고속 서버를 사용하고 있기 때문에 헤더가 구성 중인 백엔드 Express가 아닌 해당 서버에서 헤더가 전송되기 때문입니다.
webpack-dev-server를 설정하지 않았더라도 주요 프런트 엔드 프레임워크(예: crate-react-app)에 사용되는 일부 상용 플레이트 도구는 후드 아래에서 webpack-dev-server를 계속 사용합니다.
를 들어,를 할 , 검사를 할 수 있습니다.start
CRA의 스크립트("npm start"가 실행될 때 호출됨):
https://github.com/visionmedia/express/blob/master/lib/http.js#L72 코드를 읽어보니 조건부가 아닌 것 같으니 참고 살아야 할 것 같다는 생각이 듭니다.
nginx/apache 프런트엔드가 있는 경우에도 헤더를 제거할 수 있습니다(apache 및 headers용 mod_headers - more for 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' }))
Express ^4.17을 사용합니다.
언급URL : https://stackoverflow.com/questions/5867199/cant-get-rid-of-header-x-powered-byexpress
'it-source' 카테고리의 다른 글
Angular JS로 CORS를 설정하려면 어떻게 해야 합니까? (0) | 2023.08.19 |
---|---|
객체(트리)를 반복적으로 순환하기 (0) | 2023.08.19 |
끌어오기 요청을 Github의 기본값이 아닌 다른 분기에 병합 (0) | 2023.08.19 |
수행 표시줄과 새로 도입된 도구 모음의 차이점은 무엇입니까? (0) | 2023.08.19 |
Gitdiff --이름만 사용하고 해당 목록을 복사합니다. (0) | 2023.08.19 |