服务器端如何判断ajax请求方式
发布时间:2020-12-16 00:18:28 所属栏目:百科 来源:网络整理
导读:ajax是一类http请求,自然包含请求头,和请求体。 当服务器接收到ajax请求时,为了专门给ajax返回某一种特定形式(如json)的数据,就需要知道当前请求是否是ajax请求。 由于时间的关系,这里只给出php端判断请求的头的方式,至于java,python,C#而言,原理一
ajax是一类http请求,自然包含请求头,和请求体。 当服务器接收到ajax请求时,为了专门给ajax返回某一种特定形式(如json)的数据,就需要知道当前请求是否是ajax请求。 由于时间的关系,这里只给出php端判断请求的头的方式,至于java,python,C#而言,原理一样,请求标记name都是一致的,所以只需使用各自的api就可以实现。 <?php functionisAjax() { if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])) { if('xmlhttprequest'==strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])) { returntrue; } } returnfalse; } //就这么简单 ?> 在PHP中,属性HTTP_X_REQUEST_WITH来自于底层封装,如果不想使用 $_SERVER来判断,可以使用php提供的 getAllHeaders()来获取 <?php $headers=getallheaders(); //可以遍历一下 while(list($header,$value)=each($headers)){ echo"$header:$value<br>n"; } //$headers是一个数组,也可以使用已知的key读取数据,来判断是否是ajax请求 if(isset($headers['x-request-with'])&&$headers['x-request-with']=='xmlhttprequest') { echo'yes'; } ?> 在java中也一样 //使用servlet或者struts2,springmvc中的request访问 Stringxhr=request.getHeader('x-request-with'); if('xmlhttprequest'.equal(xhr)){ } 所以,在某些框架如ThinkPHP,直接将这个状态封装成常量 <?php $isAjaxRequest=isAjax(); defined('IS_AJAX')ordefine('IS_AJAX',$isAjaxRequest); defined('IS_POST')ordefine('IS_POST',$_SERVER['REQUEST_METHOD']=='POST') ///...... if(IS_AJAX&&IS_POST) { //.... } ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |