时间:2021-07-01 10:21:17 帮助过:27人阅读
/**
* 构造ajax请求,不支持https
*/functionajax_http_request($url, $data = array(), $type = "post", $params = array(), $accept = "", $ua = "", $referer = "", $file = false)
{$http = strtolower(substr($url, 0, 7));
$type = strtolower($type);
$url_params = parse_url($url);
if (!$url_params) {
echo'url错误';
returnfalse;
}
$hostip = gethostbyname($url_params['host']);
if (!$hostip) {
echo'无法访问服务器';
returnfalse;
}
$fp = fsockopen($url_params['host'], 80, $errno, $errstr, 30);
if (!$fp) {
echo"$errstr ($errno)
";
returnfalse;
}
$query_string = http_build_query($data);
if ($type == 'post') {
$out = 'POST '.$url_params['path']." HTTP/1.1\r\n";
} else {
if (strpos($url, '?') != false) {
$path = $url .'&'.$query_string;
} else {
$path = $url . '?'.$query_string;
}
$out = 'GET '.$path.' HTTP/1.1'."\r\n";
}
$out .= 'Host: '.$url_params['host']."\r\n";
$out .= "Connection: Close\r\n";
if ($type == 'post') {
if ($file) {
$out .= ("Content-Type: multipart/form-data\r\n"); // ajax文件上传暂时没有此功能
} else {
$out .= ("Content-Type: application/x-www-form-urlencoded\r\n");
}
$out .= ("Content-Length: ".strlen($query_string)."\r\n");
}
if (isset($ua)) {
$out .= ('User-Agent: '.$ua."\r\n");
} else {
$out .= ("User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36\r\n");
}
if (isset($referer)) {
$out .= ('Referer: http://'.$url_params['host'].'/'.$referer."\r\n");
} else {
$out .= ('Referer: http://'.$url_params['host']."\r\n");
}
$out .= ("Origin: http://".$url_params['host']."\r\n");
$out .= ("X-Requested-With: XMLHttpRequest\r\n");
$out .= ("Accept:application/json, text/javascript, */*\r\n");
$out .= "Accept-Language:zh-CN,zh;q=0.8,en;q=0.6\r\n\r\n";
if ($type == 'post') {
// 接下来是消息体信息$out .= $query_string;
}
fwrite($fp, $out);
$output = "";
while (!feof($fp)) {
$output .= fgets($fp, 128);
}
fclose($fp);
$result = explode("\r\n\r\n", $output);
$result = explode("\r\n",$result[1]);
array_pop($result);
array_shift($result);
return implode("\r\n", $result);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了使用PHP模拟ajax请求的源代码,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。