Я работаю над сценарием для отправки данных клиента на сервер набора номера. Я опубликовал аналогичную проблему об этом некоторое время назад, но, наконец, смог получить ответы. Однако я столкнулся с другой проблемой.Решение проблем с запросом 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 перед GET/POST. Таким образом, поскольку вам дали 401, POST/GET никогда не обсуждались. Если это так, как только вы выясните свою проблему с auth, вам должно быть хорошо идти. Тем не менее. –
Странно, что у меня нет никаких проблем на моем локальном сервере с этим скриптом, но в другом месте есть большая проблема. – James