如何使用 cURL 传递授权标头? (在
/usr/bin/curl
中可执行)。
http://curl.se/docs/httpscripting.html
请参阅第 6 部分:HTTP 身份验证
HTTP 身份验证
HTTP 身份验证能够告诉服务器您的用户名和 密码,以便它可以验证您是否可以执行您所要求的请求 正在做。 HTTP 中使用的基本身份验证(这是curl 使用的类型) 默认)是基于 plain text 的,这意味着它发送用户名和密码 只是稍微有些混乱,但任何嗅探的人仍然可以完全阅读 您和远程服务器之间的网络。
告诉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,如果需要摘要使用--proxy-digest。
如果您使用这些用户+密码选项中的任何一个但省略密码 部分,curl 会以交互方式提示输入密码。
请注意,当程序运行时,可能会看到其参数 列出系统正在运行的进程时。因此,其他用户可能会 如果您将密码作为普通命令行传递,则可以查看您的密码 选项。有一些方法可以规避这个问题。
值得注意的是,虽然这就是 HTTP 身份验证的工作原理,但非常 许多网站在提供登录等功能时不会使用此概念。请参阅 有关更多详细信息,请参阅下面的“Web 登录”章节。
只需添加,这样您就不必点击:
curl --user name:password http://www.example.com
或者如果您尝试为 OAuth 2 进行发送身份验证:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
不记名代币看起来像这样:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
这对我有用:
curl -H "Authorization: Bearer xxxxxxxxxxxxxx" https://www.example.com/
(对于那些正在寻找 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);
对于 HTTP 基本身份验证:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
替换
_your_token_
和 URL。
使用时请注意:
curl -H "Authorization: token_str" http://www.example.com
token_str
和Authorization
必须用空格分隔,否则服务器端将无法获取HTTP_AUTHORIZATION
环境。
从
curl
7.61.0 开始,您可以使用 --oauth2-bearer <token>
选项设置正确的 Bearer 授权标头。
此示例包括以下内容:
curl -X POST -H "Content-Type: application/json" -d '{"name”:”Johnny B. Goode”, "email”:”[email protected]"}' -H "Authorization: Bearer $(echo -n Guitar Maestro | base64)" https://url-address.com
如果您在调用时没有令牌,则必须进行两次调用,一个用于获取令牌,另一个用于从响应中提取令牌,请注意
grep 令牌 |切-d,-f1 |切-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
FWIW,在 Mac OS 上,我发现当目标 URL 包含查询参数时,我需要用引号将其括起来,例如,
curl -H "Authorization: Token xxxxxxxxxxxxxx" "https://www.example.com/?param=myparam"
以下内容对我有用
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
对于那些进行基于令牌的身份验证的人......请确保您这样做:
curl -H“AuthToken:”
相反!!
一个简单的例子是使用授权转换为base64的参数
curl -XPOST 'http://exemplo.com/webhooks?Authorization=Basic%20dGVzdDoxMjM0NTYK'