Php HEAD请求问题的解决方案
我一直在编写一个脚本,将客户数据发送到拨号服务器。不久前我发布了一个类似的问题,但最终得到了一些回复。然而,我面临着另一个问题 当我从本地主机服务器测试脚本时,数据被成功发送,我得到一个200OK http响应。在我的本地主机服务器上,当我检查curl\u信息的详细信息时,request\u头显示已经使用了POST 当我在另一台服务器上测试相同的脚本时,不会返回任何响应。然而,HTTP_代码确实显示401,表明存在安全和授权问题。然而,请求_头是HEAD 现在有谁能帮我弄清楚为什么请求_头之间存在如此大的差异,以及是否有办法强制秒服务器使用POST。因为我感觉这个服务器在HEAD请求方面有问题 这是我正在使用的脚本:Php HEAD请求问题的解决方案,php,curl,Php,Curl,我一直在编写一个脚本,将客户数据发送到拨号服务器。不久前我发布了一个类似的问题,但最终得到了一些回复。然而,我面临着另一个问题 当我从本地主机服务器测试脚本时,数据被成功发送,我得到一个200OK http响应。在我的本地主机服务器上,当我检查curl\u信息的详细信息时,request\u头显示已经使用了POST 当我在另一台服务器上测试相同的脚本时,不会返回任何响应。然而,HTTP_代码确实显示401,表明存在安全和授权问题。然而,请求_头是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);
$full\u url=$\u GET['url']。urlencode($_GET['attrib']);
$loginUsername=“123456”;
$loginPassword=“123456”;
$UnscriptedString=$loginUsername.:“$loginPassword;
$encryptedString=base64_encode($unscriptedstring);
$headers=array(“接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”,
“接受语言:en gb”,
“接受编码:gzip,deflate”,
“接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.7”,
“保持活力:300”,
“连接:保持活动状态”,
“内容类型:application/x-www-form-urlencoded;charset=UTF-8”,
“内容长度:”.strlen($\u GET['attrib']),
“传输编码:分块”,
$\u获取['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);#https URL是必需的
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
curl_setopt($ch,CURLOPT_URL,$_GET['URL']);
curl_setopt($ch,CURLOPT_USERPWD,“$loginUsername:$loginPassword”)//登录
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
卷曲设置($ch,卷曲设置桩,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$_GET['attrib']);
curl_setopt($ch,CURLOPT_HTTP_VERSION,curl_HTTP_VERSION_1_1);
//curl_setopt($ch,CURLOPT_超时,10);
curl_setopt($ch,CURLINFO_HEADER_OUT,1);
curl_setopt($ch,CURLOPT_VERBOSE,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$response=curl\u exec($ch);
如果(!$response){
$response=curl\u错误($ch);
}
回声“”$答复。“”;
$info=curl\u getinfo($ch);
if(旋度误差($ch)){
echo“ERROR”。curl_ERROR($ch)。“\n
”;
}否则{
打印“”;
打印(信息);
打印“”;
}
回声“”;
变量转储($headers);
卷曲关闭($ch);
谢谢
詹姆斯我会尝试使用这个选项
curl\u setopt($ch,CURLOPT\u SSL\u VERIFYHOST,0)代码>
作为一个解决方案,您可以考虑使用“代码> CurLopttCuppRebug < /Cord>选项”。 头请求通常是代理或缓存检查的结果,如果在发布GET刷新内容之前缓存内容仍然有效吗?在客户端和服务器之间是否有代理或缓存?我不希望在发布之前使用它,因为它没有任何意义
我会尝试使用Wireshark或类似工具精确跟踪请求和响应的顺序以及它们的来源
另一个Altgenerative是一个简单的代理,用于转储HTTP流量,Google的第一个结果是这个(我自己没有使用):
我相信您得到的是“HEAD已使用”,因为您在GET/POST之前发送HEAD。因此,由于您获得了401,POST/GET甚至从未经过协商。如果是这样的话,一旦你解决了你的授权问题,你就可以开始了。只是一种预感。奇怪的是,我用这个脚本在本地服务器上没有任何问题,但在其他地方,有一个大问题。。