无法识别 HTTP 标头字段

HTTP Header Field not recognised

本文关键字:字段 HTTP 识别      更新时间:2023-10-16

我正在尝试利用boost::beast通过HTTP与服务器进行通信。

我正在客户端工作,并希望发送至少包含以下标头字段的请求:"X-API-SIGNATURE"。

我正在按如下方式创建请求:

http::request<http::dynamic_body> request;
request.version(11);
request.method(http::verb::get);
request.target("/test");
request.set(http::field::host, host_);
request.set("X-API-KEY", key_);
request.set("X-API-SIGNATURE", signature_);
int count_Header_Field_X_API_SIGNATUR = request.count("X-API-SIGNATURE"); // This is 1.
int count_Header_Field_X_API_Bla = request.count("X-API-BLA"); // This is 0.

我按如下方式发送请求:

boost::beast::http::async_write(
*socket_,
request,
std::bind(
&Testclass::on_write,
shared_from_this(),
std::placeholders::_1,
std::placeholders::_2));
}

之后,我收到来自服务器的响应,报告我一个错误:

{"errors":[{"message":"Missing header: X-API-SIGNATURE","code":1,"field":"X-API-SIGNATURE"}],"credits":8}

我不明白为什么服务器无法识别我之前插入到请求中的"X-API 签名"标头字段。

我做错了什么?

更新:看起来您根据HTTP协议正确执行了所有操作,但是服务器不喜欢您的请求的特定内容

signature_的价值是什么?

以下语句的输出是什么?

std::cout << request["X-Api-Signature"] << "n";