我如何通过授权头使用cURL?(可在/usr/bin/curl中执行)。
/usr/bin/curl
http://curl.se/docs/httpscripting.html
参见第6部分。HTTP身份验证
HTTP身份验证
HTTP身份验证是告诉服务器您的用户名和 这样它就能验证你是否被允许执行你的请求 做的事情。HTTP中使用的基本身份验证(这是curl使用的类型by) 默认)是基于平原 文本的,这意味着它发送用户名和密码 只是有点模糊,但任何人都能读懂 .你和远程服务器之间的网络
告诉curl使用用户和密码进行身份验证:
curl --user name:password http://www.example.com
站点可能需要不同的身份验证方法(检查标题 由服务器返回),然后——ntlm,——digest,——negotiate甚至 ——anyauth可能是适合你的选项。
有时您的HTTP访问只能通过使用HTTP 代理。这似乎在各个公司都很常见。HTTP代理 可能需要自己的用户和密码,以允许客户端通过到 互联网。要指定那些带有curl的,运行如下命令:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
如果您的代理要求使用NTLM方法进行身份验证, 如果需要文摘,则使用——proxy-ntlm
如果您使用这些用户+密码选项中的任何一个,但不包含密码 部分,curl将交互式提示输入密码
请注意,当程序运行时,它的参数可能是可以看到的 显示系统运行进程时。因此,其他用户可能会 能够观察您的密码,如果您传递他们作为普通命令行 选项。
值得注意的是,虽然这是HTTP身份验证的工作方式,但非常 许多网站在提供登录等功能时不会使用这个概念。看到 . .
只是添加,所以你不需要点击:
或者如果你试图为OAuth 2发送身份验证:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
当你使用: # EYZ0 < / p >
token_str和Authorization必须用空格隔开,否则服务器端将得不到HTTP_AUTHORIZATION环境。
token_str
Authorization
HTTP_AUTHORIZATION
(对于那些正在寻找php-curl答案的人)
$service_url = 'https://example.com/something/something.json'; $curl = curl_init($service_url); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate $curl_response = curl_exec($curl); $response = json_decode($curl_response); curl_close($curl); var_dump($response);
无记名代币看起来是这样的:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
这招对我很管用:
curl -H "Authorization: Bearer xxxxxxxxxxxxxx" https://www.example.com/
HTTP基本认证:
# EYZ0
替换_your_token_和URL。
_your_token_
如果在调用时没有令牌,则必须进行两次调用,一次获取令牌,另一次从响应中提取令牌,请注意
Grep令牌| cut -d, -f1 | cut -d\" -f4
因为它是处理从响应中提取令牌的部分。
echo "Getting token response and extracting token" def token = sh (returnStdout: true, script: """ curl -S -i -k -X POST https://www.example.com/getToken -H \"Content-Type: application/json\" -H \"Accept: application/json\" -d @requestFile.json | grep token | cut -d, -f1 | cut -d\\" -f4 """).split()
提取令牌后,您可以使用令牌进行后续调用,如下所示。
echo "Token : ${token[-1]}" echo "Making calls using token..." curl -S -i -k -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${token[-1]}" https://www.example.com/api/resources
从curl 7.61.0开始,你可以使用--oauth2-bearer <token>选项来设置正确的承载授权头。
curl
--oauth2-bearer <token>
这个例子包括以下内容:
curl -X POST -H "Content-Type: application/json" -d '{"name”:”Johnny B. Goode”, "email”:”johnny.b.goode@mail.com"}' -H "Authorization: Bearer $(echo -n Guitar Maestro | base64)" https://url-address.com
一个简单的例子是使用授权转换为base64的参数
curl -XPOST 'http://exemplo.com/webhooks?Authorization=Basic%20dGVzdDoxMjM0NTYK'
对于那些做基于令牌的身份验证的人…一定要做到:
curl -H " AuthToken: "
相反! !
下面的方法对我很有用
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
FWIW,在Mac OS上,我发现我需要用引号包围目标url时,它包含查询参数,例如,
curl -H "Authorization: Token xxxxxxxxxxxxxx" "https://www.example.com/?param=myparam"