使用PHP模拟ajax请求的源代码
程序员文章站
2022-05-11 09:00:45
...
我已经试过了,非常好用。
/**
* 构造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教程有兴趣的朋友有所帮助。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
上一篇: 简单理解Java的垃圾回收机制与finalize方法的作用
下一篇: 最好的编程语言及其它
推荐阅读
-
php使用curl模拟浏览器表单上传文件或者图片的方法
-
php自定义类fsocket模拟post或get请求的方法
-
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
-
javascript和php使用ajax通信传递JSON的实例
-
Ajax请求PHP后台接口返回信息的实例代码
-
postman的安装与使用方法(模拟Get和Post请求)
-
php模拟ping命令(php exec函数的使用方法)
-
python利用requests库模拟post请求时json的使用
-
使用PHP Socket 编程模拟Http post和get请求
-
php中使用Ajax时出现Error(c00ce56e)的详细解决方案