在搜索指南时,我在 Wikipedia 上找到了这个示例
GET /dir/index.html HTTP/1.0
Host: localhost
Authorization: Digest username="Mufasa", realm="[email protected]", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/dir/index.html",
qop=auth,
nc=00000001,
cnonce="0a4f113b",
response="6629fae49393a05397450978507c4ef1",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
(如果有一个工具/站点可以将请求从这种形式的原始请求转换为 curl 命令,那就太好了)
当我尝试向站点发送正常的获取请求时,这是领域和随机数。
WWW-Authenticate: Digest realm="device1",nonce="3c5d8f92f03d9f1afd5dd55a7b172ee8", qop="auth", algorithm="MD5"
再次在线搜索后,我得到命令应该是这样的
curl "url" --digest -u {username}:{pass} -vv -d @4.xml -H "Content-Type: text/xml;charset=utf-8"
但我没有找到将随机数或领域或 qop 或 algorithm="MD5" 放在哪里
而 .xml 文件包含发布数据(在我的情况下,它是一个肥皂动作)
用户Alexey R.从堆栈溢出回答
此外,另一个站点上的用户命令应该是这样的
当使用 Digest 认证时,你需要发送一个 HTTP “Authorization” 头,这个头是 nonce 等应该去的地方。
但是,Digest 使用质询/响应机制,该机制要求 Authorization 标头在第二个 HTTP 请求中发送,而不是在原始 HTTP 请求中发送。
只有在原始 HTTP 请求收到 401 响应后,才能发送第二个 HTTP 请求。
您应该能够从这个已关闭的 GitHub 问题中获得这个想法,其中进一步解释了 curl 与此工作的方式。