如何使用 HTTP 基本身份验证和 PHP curl 发出请求?
2022-08-30 06:07:57
我正在用PHP构建一个REST Web服务客户端,目前我正在使用curl向服务发出请求。
如何使用 curl 发出经过身份验证的(http 基本)请求?我必须自己添加标题吗?
我正在用PHP构建一个REST Web服务客户端,目前我正在使用curl向服务发出请求。
如何使用 curl 发出经过身份验证的(http 基本)请求?我必须自己添加标题吗?
你想要这个:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
Zend有一个REST客户端和zend_http_client,我相信PEAR有某种包装器。但它很容易自己做。
因此,整个请求可能如下所示:
$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', $additionalHeaders));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payloadName);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($ch);
curl_close($ch);
CURLOPT_USERPWD
基本上使用http标头发送字符串的base64,如下所示:user:password
Authorization: Basic dXNlcjpwYXNzd29yZA==
因此,除了之外,您还可以使用标头选项,如下所示其他标头:CURLOPT_USERPWD
HTTP-Request
$headers = array(
'Content-Type:application/json',
'Authorization: Basic '. base64_encode("user:password") // <---
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);