Я создаю Express приложение, которое выполняет низкоуровневую обработку HTTP. Среди запросов, которые должны быть обработаны, есть запросы с произвольными Expect
заголовками («произвольное» значение, «содержащее значения, отличные от единственного указанного значения 100-continue
»).
У меня наивно Предполагается, что я смогу получить доступ и обработать заголовок Expect
в своей функции-обработчике запросов так же, как и любой другой заголовок HTTP-запроса:
import express from "express";
const app = express();
app.post("/foo", (req, res) => {
console.log(req.header("accept"));
console.log(req.header("expect"));
// do stuff
res.status(200).json({foo: "bar"});
});
app.listen(3000);
Это прекрасно работает, если нет заголовка Expect
на самом деле установлен. Однако, как только приложение получает запрос с таким набором заголовков, оно, похоже, даже не вызывает обработчик запроса, а сразу отклоняет запрос со статусом 417 Expectation Failed
:
$ http -v localhost:3000/foo foo=bar Expect:202-accepted
POST /foo HTTP/1.1
Accept: application/json, */*
[...]
User-Agent: HTTPie/0.9.9
Expect: 202-accepted
{
"foo": "bar"
}
HTTP/1.1 417 Expectation Failed
Connection: keep-alive
Date: Mon, 16 Mar 2020 13:12:28 GMT
Transfer-Encoding: chunked
На На первый взгляд кажется, что Express дает некоторую особую обработку запросам с заголовком Expect
и отклоняет их еще до того, как они достигнут обработчика запросов. Как я могу «убедить» Express поступить иначе?