2012-12-02 102 views
2

我有一個web服務,我可以使用我的瀏覽器,但不能用CURL在PHP腳本中調用。PHP捲曲登錄太長

這裏我使用的代碼與發送的登錄名/密碼的示例。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); 
curl_setopt($ch, CURLOPT_USERPWD,'BmN+GP4VBev5tVzJU/altsyXXw0PXYcunbT8F8EatlbpctBXZp1OO2ySQyekZb5729qQPkdwdDBoUxMjBu1mlvv5Bt90GGRwyvEHGTMlT9cjs5YRpBJxEhksVyoL1Z4pwLAq3gKSj+PGW0HQhOSr8h7lyMG+9HJjL7pKeeds+Byn+TYnaium1MsGFg4TiE6Ztvr6rVpdaJSI3einSABuC1PCnNPkbHEdtwdrd8DU2jKcQ1fzderhmuJQE6pls6wwQjWF6sCTUTo/upUHUe0p5GY+7pKCHBXgNEhRhx3JgweiJN8ErxoiPCCIOdOScAEfcgZOgqQDGsJqnhuQ/5fKqg==:passwordOfTheUser'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_NOBODY, false); 
curl_setopt($ch, CURLOPT_URL, $url); 
$result = curl_exec($ch); 
var_export(curl_getinfo($ch))."\n"; 

如果我看的getInfo的內容,我得到這個

[...] 
'request_header' => 'GET /uriNotRelevant.queryString=Data HTTP/1.1 
Authorization: Digest  username="BmN+GP4VBev5tVzJU/altsyXXw0PXYcunbT8F8EatlbpctBXZp1OO2ySQyekZb5729qQPkdwdDBoUxMjBu1mlvv5Bt90GGRwyvEHGTMlT9cjs5YRpBJxEhksVyoL1Z4pwLAq3gKSj+PGW0HQhOSr8h7lyMG+9HJjL7pKeeds+Byn+TYnaium1MsGFg4TiE6Ztvr6rVpdaJSI3einSABuC1PCnNPkbHEdtwdrd8DU2jKcQ1fzderhmuJQE6pls6w", realm="SVCCompagnonRelay Digest Authentication", nonce="MTM1NDQ4Nzc2NjkzNjoxYTRhMThkOTk5Yjc4OWY1Y2Q0MWQ3NzY3NzRlYzFlYw==", uri="/uriNotRelevant.queryString=Data", cnonce="MTczNDU1", nc=00000001, qop="auth", response="c319b14a40bf54955b764117d7f4bbc3" 
Host: example.org 
Accept: */* 
Cookie: MBLPRDSession=C7B717115F119BAAB5C5BC308DD7FB18; WASMBLPRD2AND=mbltrap21and 

', 
) 

你可以看到,包含登錄名頭:密碼被截斷。 我試圖設置頁眉manualy,但重現DIGEST protocole是想

我不知道現在該做什麼:-(

你有任何想法如何放大消化登錄規模更難?

Edit²: 解決了問題,看到我的解決辦法

回答

0

我搜索到捲曲的源代碼,並發現這一點:

//http_digets.c 
#define MAX_VALUE_LENGTH 256 
#define MAX_CONTENT_LENGTH 1024 

//urldata.c 
#define MAX_CURL_USER_LENGTH 256 
#define MAX_CURL_PASSWORD_LENGTH 256 
#define MAX_CURL_USER_LENGTH_TXT "255" 
#define MAX_CURL_PASSWORD_LENGTH_TXT "255" 

也許這就是爲什麼我的頭由256個字符截斷。我會嘗試用更高的值重新編譯curl,看看它是否能解決問題。

我將urldata.c的數據更改爲4096和4095(它很大),它的工作非常好。我用PHP解決了我的問題。 我創造了另一個問題,我canot在COMMANDE線

使用捲曲
#curl http://google.fr 
curl: (2) Failed initialization 

但即使沒有改變什麼,我有這個問題。這與我的修改無關。也許我的系統版本過於更新(最後一個)。這是另一個問題。無論如何,我不使用它在我的web服務器上的命令行中。