• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP判断一个请求是AJAX请求还是普通请求_php

php 搞代码 3年前 (2018-06-21) 125次浏览 已收录 0个评论

php程序中,如何判断一个网页请求是ajax请求还是普通请求?我们在做项目中经常会存在这样一个问题,在浏览器中直接输入我ajax提交的地址后,浏览器就能直接请求数据并将数据打印到页面上。从程序的严谨性上和安全上来说,我觉得这样非常不好。

但是由于水平有限,这个问题直到今天才被我解决,特此留下文章以供有此需要的人学习。

首先说说原理:在发送ajax请求的时候,我们可以通过xmlHttpRequest这个对象,创建自定义的header头信息,如果您使用的是原生的ajax方法,也就是未使用jquery或者其他js框架包装的ajax方法,那么代码如下:

 xmlHttpRequest.setRequestHeader("request_type","ajax");

另外通过jquery包装的$.ajax()方法,我们可以轻松地在发送ajax请求之前,创建我们自定义的header头信息,示例如下:

 $.ajax({  type:"GET",  url:base_url + 'php_check_ajax_request/get_user_list.html',  beforeSend:function (XMLHttpRequest) {   XMLHttpRequest.setRequestHeader("request_type","ajax");  },  success:function(data){   $("#user_list").html(data);   $tip.hide();   $button.attr('disabled',true);  } });

上面的代码中有一句:

 XMLHttpRequest.setRequestHeader(“request_type”,”ajax”);

这一句代码就是向header头信息里面创建了一个我们自定义的一个变量“request_type”。这个变量在php中接收变量如下:

 $_SERVER['HTTP_REQUEST_TYPE']

那么对于本文所提出的的问题,我们就可以按下面这种方式来判断用户发送的请求是哪种方式了。

 <?php if (isset($_SERVER['HTTP_REQUEST_TYPE']) && $_SERVER['HTTP_REQUEST_TYPE'] == "ajax"){  //ajax提交 }else{  //非ajax提交 }

需要说明的是 “request_type”这个变量值是我们自定义的,你还可以随意自定义,比如“test”,“is_ajax”等等。

您可能感兴趣的文章

  • http请求中同步请求和异步请求的区别
  • php判断字符串是否全英文,纯中文,中英文组合的方法
  • php如何判断当前的操作系统是linux还是windows
  • js如何判断鼠标滚轮是向下还是向上滚动
  • php判断日期格式是否正确的方法总结
  • php判断远程文件是否存在的办法
  • php提取身份证号码中的生日日期以及验证是否为未成年人的函数
  • 程序员和测试员之间的经典对白。这些是国外程序员总结分享的,称其上全球通用?

欢迎大家阅读《PHP判断一个请求是AJAX请求还是普通请求_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址