curl之CURLOPT_HTTPHEADER
单个
我们在不设置host的时候提交到虚拟主机后,会出现:
Tencent:/usr/local/tads/htdocs/mhxy2010hn.act/crontab # curl "http://172.23.129.11*/user_v3/freere*g.php?act_id=109353"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /user_v3/freereg.php was not found on this server.</p>
</body></html>
设置host后就能找到了。
curl为我们用了CURLOPT_HTTPHEADER来做host的工作:
相当于:
这样一折腾,就ok了,呵呵!
其实这个主要是解决,在线上有host指向了,但是其他的需哟又需要这个host的域名,而ip不同的情况。
—————————————————————————————————————————————————
用Curl直接模拟Host如下:
以上摘录自:http://jackxiang.com/post/4022/
单个
<?php
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\n"));
?>
多个curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\n"));
?>
<?php
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\nOtherheader: stuff\n"));
?>
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\nOtherheader: stuff\n"));
?>
我们在不设置host的时候提交到虚拟主机后,会出现:
Tencent:/usr/local/tads/htdocs/mhxy2010hn.act/crontab # curl "http://172.23.129.11*/user_v3/freere*g.php?act_id=109353"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /user_v3/freereg.php was not found on this server.</p>
</body></html>
设置host后就能找到了。
curl为我们用了CURLOPT_HTTPHEADER来做host的工作:
function curl_post($host, $data)
{
$ch = curl_init();
$res= curl_setopt ($ch, CURLOPT_URL,$host);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Host: act.*.qq.com"));
$xyz = curl_exec ($ch);
//echo $xyz;
if ($xyz == NULL) {
return 0;
}
return $xyz;
}
{
$ch = curl_init();
$res= curl_setopt ($ch, CURLOPT_URL,$host);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Host: act.*.qq.com"));
$xyz = curl_exec ($ch);
//echo $xyz;
if ($xyz == NULL) {
return 0;
}
return $xyz;
}
相当于:
172.23.129.* act.*.qq.com
这样一折腾,就ok了,呵呵!
其实这个主要是解决,在线上有host指向了,但是其他的需哟又需要这个host的域名,而ip不同的情况。
—————————————————————————————————————————————————
用Curl直接模拟Host如下:
以上摘录自:http://jackxiang.com/post/4022/
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2656/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2013-12-3 10:38
评论列表
2010-7-2 16:46 | fc_lamp
good
分页: 1/1 1