' - user'对curl意味着什么

jro*_*jro 20 authentication post curl

我正在使用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"}' \
     ...
Run Code Online (Sandbox Code Playgroud)

Jah*_*mic 63

聚会迟到了,但这里是...

您可以使用带有-v(verbose) 参数的curl来查看发送的标头。然后您将看到 --user 提供的信息被转换为标题,例如:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
Run Code Online (Sandbox Code Playgroud)

Basic关键字后面的文本是--user参数提供的username:password组合的base64编码文本字符串

要在 Linux 上手动生成 base64 编码的凭据,您只需调用:

echo -n "username:password" | base64 -w0
Run Code Online (Sandbox Code Playgroud)

对于 Windows,将“用户名:密码”保存到一个文件中,然后使用 certutil.exe 创建一个 base64 编码文件:

certutil -encode credentials.txt credentials.asc
Run Code Online (Sandbox Code Playgroud)

要测试端到端,您可以删除--user username:password并替换为--header Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l,它仍然可以很好地进行身份验证。

总之,要在没有 curl 的情况下手动执行此操作,您需要进行 base64 编码username:password组合。然后,您需要Authorization使用类型Basic以及 base64 编码字符串来设置 HTTP标头。

  • 这才是真正的答案。 (3认同)

小智 14

--user (或者 -ucurl 中的) 为您的请求提供基本身份验证。

在 Postman 中,您可以通过在 Authorization 选项卡中进行选择来获得相同的结果。

--user "<client_id>:<client_secret>" 变成

  • 类型:基本身份验证
  • 用户名:client_id
  • 密码:client_secret

在此处输入图片说明


小智 11

--usercurl中用于服务器身份验证的参数.因此,如果您不通过--digest或--negotiate等其他参数定义身份验证类型,则表示用于http基本身份验证的USER参数,它也可以与:PASSWORD chunk结合使用以设置密码.您的问题的完整答案取决于您发送请求的API背后使用何种类型的身份验证,并且可能卷曲不够,因为它支持一组有限的身份验证方案...