【问题标题】:Get error 400 when request made through python requests, but works in cURL通过 python 请求发出请求时出现错误 400,但在 cURL 中有效
【发布时间】:2021-10-22 03:07:48
【问题描述】:

这个问题有很多条目,但是在扫描它们,查看它们提供的内容并在我正在使用的代码上尝试它之后,没有运气,我想我会将我的问题添加到桩。这是我正在使用的代码。

import json
import requests

token = "ABC"
ip_address = "1.1.1.1"

url     = "http://" + ip_address + ":8200/v1/kv/test-secret"
payload = {"key":"value"}
headers = {'X-Vault-Token': token}

res = requests.post(url, data=json.dumps(payload), headers=headers)

print(res.status_code, res.reason)

此代码将始终返回错误 400 Bad Request。已经完成了验证令牌、url、POST 的请求配置是否正确,诸如此类的事情(令牌和 ip 不正确,原因很明显)

同时,这工作正常。

curl --header "X-Vault-Token: ABC" --request POST --data @payload.json http://1.1.1.1/v1/secret/data/my-secret

如果有人有任何想法,我会全力以赴。我会坦率地承认我不是 python 专家,所以我赌钱我在那里做错了什么。我只是看不到它是什么。

【问题讨论】:

  • 这些是非常不同的 URL。

标签: python curl hashicorp-vault


【解决方案1】:

有完全相同的问题。问题是经过很多混乱之后将请求更改为获取:

import json
import requests

token = "ABC"
ip_address = "1.1.1.1"

url     = "http://" + ip_address + ":8200/v1/kv/test-secret"
payload = {"key":"value"}
headers = {"X-Vault-Token": "token"}

res = requests.get(url, data=json.dumps(payload), headers=headers)

print(res.status_code, res.reason)

这为我解决了这个问题。感觉你的痛苦,遗憾的是文档不是更清楚。

如果您使用的是最新版本的 Vault,您可能需要查看 hvac 库并使用 approle 进行身份验证:LINK

然后使用秘密引擎从保险库中获取值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 2011-01-10
    • 2020-03-30
    • 2019-05-03
    • 2020-09-20
    • 2019-10-10
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多