我正在使用API,我必须发送POST请求。我知道如何设置标题(-H)和(-d)是正文,但是什么是“--user”。
如果我使用Postman或带有axios的文本编辑器或只是常规的XMLRequest提交此文件,我在哪里添加它?
文档说它适用于常规的http身份验证。
curl -X POST -H "Content-Type: application/json" \
--user "<client_id>:<client_secret>" \
-d '{"grant_type": "client_credentials", "scope": "public"}' \
...
答案 0 :(得分:15)
迟到了聚会,可是...
您可以将curl与-v
(详细)参数一起使用,以查看发送的标题。然后,您将看到--user提供的信息被转换为标题,例如:
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
Basic
关键字之后的文本是--user
参数提供的username:password组合的base64编码文本字符串
要在Linux上手动生成base64编码的凭据,只需调用:
echo -n "username:password" | base64 -w0
对于Windows,将“用户名:密码”保存到文件中,然后使用certutil.exe创建base64编码的文件:
certutil -encode credentials.txt credentials.asc
要测试此端到端,可以删除--user username:password
并替换为--header Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
,它仍然可以进行身份验证。
要在不卷曲的情况下手动执行此操作,您需要对username:password
组合进行base64编码。然后,您需要将HTTP Authorization
标头设置为Basic
,并设置base64编码的字符串。
答案 1 :(得分:8)
--user
(或-u
)中的curl可为您的请求提供基本的身份验证。
在Postman中,您可以通过在“授权”标签中进行选择来达到相同的结果。
--user "<client_id>:<client_secret>"
变为
答案 2 :(得分:7)
--user
参数用于服务器身份验证。因此,如果您不通过其他参数(例如--digest或--negotiate)定义身份验证类型,则表示用于http基本身份验证的USER参数,它也可以与:PASSWORD chunk结合使用以设置密码。您的问题的完整答案取决于您发送请求的API背后使用何种类型的身份验证,并且可能卷曲不够,因为它支持一组有限的身份验证方案......
答案 3 :(得分:3)
指定用于服务器身份验证的用户名和密码。如果您只是指定用户名,curl将提示输入密码。
如果你的curl请求没有任何用户,那么 需要身份验证的服务器会发回401响应代码和关联的WWW-Authenticate:标头,其中列出了服务器支持的所有身份验证方法。
< HTTP/1.1 401
< WWW-Authenticate: Basic realm="oauth2/client"
然后您将知道服务器正在使用基本身份验证
您可以添加--basic
以明确告知它是基本身份验证
有关详细信息,请参阅HTTP authentication
答案 4 :(得分:-1)
作为 Jahmic 答案的补充,Nodejs 程序员可以这样做以转换为 base64 字符串:
const cryptoJS = require("crypto-js");
const base64Str = cryptoJS.enc.Base64.stringify(cryptoJS.enc.Utf8.parse(`${username}:${password}`))