PowerShell调用API时Authorization认证失败,如何正确设置请求头?
解决PowerShell Invoke-RestMethod的API认证问题
嘿,我来帮你搞定这个401认证失败的问题!你遇到的核心问题有两个:一是错误使用了参数简写,二是请求头的格式不符合PowerShell的要求。
问题出在哪?
你用了-H参数来传递请求头,但在PowerShell的Invoke-RestMethod里,-H其实是-Host参数的简写,根本不是用来设置请求头的!这就导致你的Authorization头完全没被正确发送,服务器自然返回认证失败。
另外,即使你用对了参数,直接传字符串格式的请求头也是无效的——PowerShell要求请求头必须以**哈希表(键值对)**的形式传递。
正确的写法
你需要用-Headers参数,配合哈希表来定义Authorization头,有两种写法都可以:
写法1:先定义哈希表再调用
# 先创建请求头哈希表,注意ApiToken后面的单引号要和API要求一致 $authHeaders = @{ Authorization = "ApiToken 'avadhohofgsdgdisbgsdhgsfd'" } # 调用API时传入这个哈希表 Invoke-RestMethod -Uri "https://custom.net/users" -Headers $authHeaders
写法2:直接在命令中嵌入哈希表
Invoke-RestMethod -Uri "https://custom.net/users" -Headers @{ Authorization = "ApiToken 'avadhohofgsdgdisbgsdhgsfd'" }
额外注意事项
有些API文档里的单引号只是用来标记占位符,实际发送时不需要带单引号。如果上面的写法还是失败,可以试试去掉令牌周围的单引号:
$authHeaders = @{ Authorization = "ApiToken avadhohofgsdgdisbgsdhgsfd" } Invoke-RestMethod -Uri "https://custom.net/users" -Headers $authHeaders
最后别忘了检查你的API令牌有没有复制错误,比如多了空格或者少了字符,这也是常见的认证失败原因哦!
内容的提问来源于stack exchange,提问作者Ash
相关产品推荐
相关产品推荐

