首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过PHP curl使用HTTP基本身份验证发出请求?

如何通过PHP curl使用HTTP基本身份验证发出请求?
EN

Stack Overflow用户
提问于 2010-01-26 23:42:19
回答 9查看 550.1K关注 0票数 267

我正在用PHP构建一个REST web服务客户端,目前我正在使用curl向该服务发出请求。

如何使用curl发出经过身份验证的(http basic)请求?我必须自己添加标题吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-01-26 23:45:41

你想要这个:

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);  

Zend有一个REST客户端和zend_http_client,我相信PEAR也有某种包装器。但这很容易由你自己来完成。

因此,整个请求可能如下所示:

代码语言:javascript
复制
$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);
票数 438
EN

Stack Overflow用户

发布于 2014-03-13 00:43:19

CURLOPT_USERPWD基本上发送带有http头部的user:password字符串的base64,如下所示:

代码语言:javascript
复制
Authorization: Basic dXNlcjpwYXNzd29yZA==

因此,除了CURLOPT_USERPWD之外,您还可以使用HTTP-Request header选项,就像下面这样处理其他header:

代码语言:javascript
复制
$headers = array(
    'Content-Type:application/json',
    'Authorization: Basic '. base64_encode("user:password") // <---
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
票数 147
EN

Stack Overflow用户

发布于 2015-08-28 21:17:17

最简单、最自然的方式就是直接使用CURL。

这对我来说很有效:

代码语言:javascript
复制
<?php
$login = 'login';
$password = 'password';
$url = 'http://your.url';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$result = curl_exec($ch);
curl_close($ch);  
echo($result);
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2140419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档