我一直致力於將客戶數據發佈到撥號服務器的腳本。我前段時間發佈了類似的問題,但最終得到了一些迴應。但是,我面臨另一個問題。HEAD請求問題的解決方案
當我從我的本地主機服務器測試腳本時,數據發送成功,我得到一個200 OK的http響應。在我的本地主機服務器上,當我查看curl_info的詳細信息時,request_header顯示POST已被使用。
當我在另一臺服務器上測試相同的腳本時,沒有響應返回。然而HTTP_CODE確實顯示了401表示和授權問題。但是request_header是HEAD。
現在任何人都可以幫助我找出爲什麼request_headers之間存在這樣的區別,以及是否有強制秒服務器使用POST的方法。當我感覺到這個服務器有HEAD請求的問題。
這是我使用的腳本:
$full_url = $_GET['url'] . urlencode($_GET['attrib']);
$loginUsername = "123456";
$loginPassword = "123456";
$unencriptedString = $loginUsername.":".$loginPassword;
$encryptedString = base64_encode($unencriptedString);
$headers = array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: en-gb",
"Accept-Encoding: gzip,deflate",
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
"Keep-Alive: 300",
"Connection: keep-alive",
"Content-type: application/x-www-form-urlencoded;charset=UTF-8",
"Content-length: " . strlen($_GET['attrib']),
"Transfer-Encoding: chunked",
$_GET['attrib'],
);
$user_agent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5)";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); # required for https urls
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
curl_setopt($ch, CURLOPT_USERPWD, "$loginUsername:$loginPassword"); //login
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_GET['attrib']);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
// curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$response = curl_exec($ch);
if (!$response) {
$response = curl_error($ch);
}
echo "<p>" . $response . "</p>";
$info = curl_getinfo($ch);
if (curl_error($ch)) {
echo "ERROR ". curl_error($ch) ."\n<br/>";
} else {
print "<pre>";
print_r($info);
print "</pre>";
}
echo "<p> </p>";
var_dump($headers);
curl_close($ch);
感謝
詹姆斯
我相信你得到一個「HEAD使用」,因爲您發送HEAD在GET/POST之前。因此,由於你獲得了401,所以POST/GET甚至從未談過。如果是這樣的話,一旦你找出你的認證問題,你應該很樂意去。只是一個預感。 – 2009-12-29 22:45:36
這只是奇怪的是,我沒有任何問題在我的本地服務器上使用這個腳本,但在其他地方,有一個大問題.. – James 2009-12-29 23:00:42