Curl 响应 401:未经授权,即使发送了用户名和密码

Dra*_*est 0 curl cmd

我有一个批处理脚本,它使用curl 向网络中的网络服务器发出http-get 请求。401: Unauthorized问题是在curl中,即使我发送了用户名和密码,与仅在谷歌浏览器等浏览器中输入链接返回相比,我也得到了响应200: OK

C:\Users\myuser>curl -I "http://admin:admin1234@192.168.0.4/arg1=0&arg2=20&arg3=0"
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm="Login to 28b6e642501d12764d8430059585d39b", qop="auth", nonce="1592879309", opaque="ecd7f630cfdef2dec4aebb35f81708e84d20a755"
Connection: close
Set-Cookie:secure; HttpOnly
CONTENT-LENGTH: 0
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

curl -I -u admin:admin1234 "http://admin:admin1234@192.168.0.4/arg1=0&arg2=20&arg3=0"
curl -I -u admin:admin1234 "http://192.168.0.4/arg1=0&arg2=20&arg3=0"
Run Code Online (Sandbox Code Playgroud)

结果是一样的401: Unauthorized。我知道这不是我连接的设备的问题,因为如果我http://admin:admin1234@192.168.0.4/arg1=0&arg2=20&arg3=0在谷歌浏览器中使用,设备会按预期运行,并且还会返回200: OK

是否有不同的方式发送用户名和密码,如果用户名和密码没有出现在任何日志文件中,奖励

Dan*_*erg 7

线索就在这个响应头字段中:

WWW-Authenticate: Digest
Run Code Online (Sandbox Code Playgroud)

这意味着服务器希望客户端使用Digest方法,而不是使用默认方法Basic 方法。-u

添加--digest到命令行,或者可能是--anyauth.