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

如何在PowerShell的Invoke-WebRequest中设置重复请求头?

PowerShell中添加重复HTTP请求头的解决方法

PowerShell的哈希表(@{})不允许存在重复键,所以直接在哈希表中定义两个相同的X-Forwarded-Host头会触发DuplicateKeyInHashLiteral错误。要实现重复请求头,有两种可靠的方法:

方法一:使用WebHeaderCollection类

System.Net.WebHeaderCollection是专门处理HTTP请求头的类,支持同一个头字段添加多个值,是最标准的解决方案:

# 创建WebHeaderCollection实例
$headers = New-Object System.Net.WebHeaderCollection

# 添加常规请求头
$headers.Add('content-type', 'application/json')
$headers.Add('authorization', 'token')

# 重复添加X-Forwarded-Host头
$headers.Add('X-Forwarded-Host', 'mywebsite.com')
$headers.Add('X-Forwarded-Host', 'mywebsite.com')

# 调用Invoke-WebRequest时传入该头集合
Invoke-WebRequest -Uri "https://目标地址" -Headers $headers -Method Post -Body $bodyContent

方法二:将头值设为数组(兼容性需验证)

部分场景下,可以将重复头的值设为数组,PowerShell会自动将其拼接为逗号分隔的字符串发送,部分服务器能识别为多个同名字段:

$headers = @{
    'content-type' = 'application/json'
    'authorization' = 'token'
    # 用数组存储多个相同头的值
    'X-Forwarded-Host' = @('mywebsite.com', 'mywebsite.com')
}

Invoke-WebRequest -Uri "https://目标地址" -Headers $headers -Method Post -Body $bodyContent

注意:这种方式的兼容性取决于服务器对逗号分隔头值的解析逻辑,WebHeaderCollection的方法兼容性更强,优先推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:47:50