2013-04-26 55 views
4

我有以下代码:卷曲 - 这个请求需要HTTP认证

$curl = curl_init($query); 
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($curl, CURLOPT_USERPWD, $username.':'.$password); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLINFO_HEADER_OUT, 1); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
$response = curl_exec($curl); 

我没有上传为AppFog应用程序,它工作正常。 问题是当我尝试在Windows Server 2008 IIS7或WAMP上运行相同的代码时。

我从服务器获取以下信息:

HTTP Status 401 - 
type Status report 
message description **This request requires HTTP authentication().** 

在看来,我不发送凭据,但“request_header”具有以下值:

POST /example HTTP/1.1 
Authorization: Basic example // deliberately removed 
Host: example.com 
Accept: */* 
Connection: close 
Content-Length: 0 
Content-Type: application/x-www-form-urlencoded 

任何想法可能是问题?谢谢。

+0

没有用户:通过你想实际使用的Windows服务器上工作? – 2013-04-26 21:57:58

+0

我试图连接到第三方服务器。所以凭证和URL在两种情况下都是相同的。 – user1359575 2013-04-26 22:00:02

+0

@MarcB是正确的。如果我没有记错的话,用户名和密码实际上需要与服务器进行身份验证。如果您更换了服务器,则需要根据需要切换用户/通行证。 – Kevin 2013-04-26 23:05:44

回答

4

我有同样的问题,我解决它通过改变

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);