Anonymous
Как удалить заголовок «хост» с помощью SuperTest
Сообщение
Anonymous » 26 сен 2025, 11:40
У меня есть Condiiton на моем http -сервере, который проверяет, является ли req.headers ["host"] не определен или нет. Я использую Supertest и Mocha для отправки запроса GET. Я попытался использовать unset ("host") , но Supertest по-прежнему отправляет заголовок "Host"
http server:
Код: Выделить всё
const http_server = http.createServer(function (req, res) {
console.log("http", req.method, req.url, req.headers);
const url_path = url.parse(req.url, true).pathname;
const query = url.parse(req.url, true).query;
if (req.method === "GET" && req.headers["host"] !== undefined) {
// force create session
const session = getSession(req);
console.log(`HOST === ${req.headers["host"]}`)
res.removeHeader("Date");
res.removeHeader("Transfer-Encoding");
res.writeHead(302, {
Location: getNewLocation(req.headers["host"], url_path, query),
Connection: "close",
});
res.end();
return;
}
handler(req, res);
});
< /code>
test < /p>
it("should return index.html", (done) => {
request(http_server)
.get("/")
.unset("Host")
.expect(200)
.expect("Connection", "close")
.expect("Etag", '"167-110-5f0633df"')
.expect("Last-Modified", "Wed, 08 Jul 2020 21:00:15 GMT")
.expect("Date", date_regex)
.expect("Cache-Control", "no-cache")
.expect("Expires", "0")
.expect("Content-Type", "text/html")
.expect("Content-Length", `
`.length)
.expect(res => assert.strictEqual(res.text, `
`))
.end(done)
})
Я пытаюсь удалить заголовок «хост», поэтому код не попадет в условие, где он отправляет 302 кода состояния
Подробнее здесь:
https://stackoverflow.com/questions/797 ... -supertest
1758876005
Anonymous
У меня есть Condiiton на моем http -сервере, который проверяет, является ли req.headers ["host"] не определен или нет. Я использую Supertest и Mocha для отправки запроса GET. Я попытался использовать unset ("host") , но Supertest по-прежнему отправляет заголовок "Host" http server: [code]const http_server = http.createServer(function (req, res) { console.log("http", req.method, req.url, req.headers); const url_path = url.parse(req.url, true).pathname; const query = url.parse(req.url, true).query; if (req.method === "GET" && req.headers["host"] !== undefined) { // force create session const session = getSession(req); console.log(`HOST === ${req.headers["host"]}`) res.removeHeader("Date"); res.removeHeader("Transfer-Encoding"); res.writeHead(302, { Location: getNewLocation(req.headers["host"], url_path, query), Connection: "close", }); res.end(); return; } handler(req, res); }); < /code> test < /p> it("should return index.html", (done) => { request(http_server) .get("/") .unset("Host") .expect(200) .expect("Connection", "close") .expect("Etag", '"167-110-5f0633df"') .expect("Last-Modified", "Wed, 08 Jul 2020 21:00:15 GMT") .expect("Date", date_regex) .expect("Cache-Control", "no-cache") .expect("Expires", "0") .expect("Content-Type", "text/html") .expect("Content-Length", ` `.length) .expect(res => assert.strictEqual(res.text, ` `)) .end(done) }) [/code] Я пытаюсь удалить заголовок «хост», поэтому код не попадет в условие, где он отправляет 302 кода состояния Подробнее здесь: [url]https://stackoverflow.com/questions/79775654/how-to-remove-header-host-using-supertest[/url]