【问题标题】:Invoke-RestMethod In Powershell Authorization Issue (header)Powershell 授权问题中的 Invoke-RestMethod(标题)
【发布时间】:2018-11-27 21:30:29
【问题描述】:

我正在尝试通过 PS 使用 Invoke-RestMethod 对我们的 Netbox 环境进行基本 GET。我正在使用来自 netbox 的 API 令牌并将其放入 Authorization 标头中,但无论我如何尝试,我都会从 Powershell 获得“未提供身份验证凭据”。我很茫然,因为这可以通过 Postman 完美运行。

$APIKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" (removed)

$Headers = @{}
$Headers.Add("Authorization", "Token $APIKey") 
$Headers.Add("Content-Type", "application/json")
$Headers.Add("Accept", "application/json")

$URI = "https://dcim.xxxxxxx.net/api/dcim/devices"

$Test = Invoke-RestMethod -Uri $URI -Headers $Headers

我已经尝试过很多不同的方式来格式化标题,硬编码只是为了测试,但无济于事。

【问题讨论】:

  • 我在我的设备上测试了您的代码,正如我在 Fiddler 中看到的那样,所有标头都已正确传输。 Authorization: Token XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Content-Type: application/json Accept: application/json PowerShell中的headers和Postman中的headers有区别吗?
  • Content-Type 可以删除,因为它是一个 GET 请求,没有请求正文。

标签: powershell-4.0


【解决方案1】:

事实证明,如果是 Netbox nginx 上的重定向 (301) 以及 Postman 在 URI 中添加尾随“/”而不在请求预览中显示的事实。 Nginx 在接收到它作为重定向时添加了“/”,然后剥离了标头(正如预期的那样)。我只需要添加尾随的“/”就可以了。 (叹)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多