You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在HttpAddRequestHeaders()中使用空请求头值?

WinInet添加空值请求头失败的问题解决

尽管HTTP RFC允许空值请求头,但WinInet的HttpAddRequestHeaders函数对请求头格式有严格的内部校验——直接传入"EmptyHeader01:"这类空值格式的头会触发参数错误(通常返回ERROR_INVALID_PARAMETER)。这是因为该函数默认要求头字段的取值部分必须包含合法内容,哪怕是空格也无法通过校验,你的几种调用方式(带换行、空格或直接冒号结尾)都不符合这个规则,所以全部失败。

解决方法

要发送空值请求头,建议绕过HttpAddRequestHeaders,直接在HttpSendRequest中传入完整的请求头字符串:

// 构造包含空值头的请求头,每个头字段以\r\n结尾
const char* customHeaders = "EmptyHeader01:\r\nX-Other-Header: test\r\n";
if (!HttpSendRequestA(hRequest, customHeaders, strlen(customHeaders), NULL, 0)) {
    std::cout << "HttpSendRequestA failed with error: " << GetLastError() << std::endl;
}

这种方式直接将请求头发送给服务器,不会经过WinInet对单个头字段的校验,能够成功发送符合RFC规范的空值请求头。

内容的提问来源于stack exchange,提问作者AppLa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:22:39