专栏首页Alone88PHP 判断页面请求是否为ajax

PHP 判断页面请求是否为ajax

php ajax

PHP 判断是否为 AJAX 请求

先说前端使用 jQuery 时怎么区分:

  jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest

  在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 来获取。(注意:中划线换成了下划线,不区分大小写)

  由此,我们可以这样来判断是否为 ajax 请求:

// php 判断是否为 ajax 请求  http://www.cnblogs.com/sosoft/
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ 
    // ajax 请求的处理方式 
}else{ 
    // 正常请求的处理方式 
};

在使用原生 JavaScript 发出 ajax 请求时,我们也可以给头部添加信息,以方便后端同学进行区分,方法如下:

 var xmlhttp=new XMLHttpRequest(); 
 xmlhttp.open("GET","test.php",true); 
 xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest"); 
 xmlhttp.send();

这里我们也一样是给头部添加 X_REQUESTED_WITH 信息,与 jQuery 的一致。当然你也可以更改为别的信息来进行区分。

  OK,进行区分之后有什么好处呢?说两个例子:

  1.当 js 文件未加载完时,用户点击了某个按钮或链接,本应是 ajax 请求的成了 正常请求,后端根据判断,不输出 ajax 时的 json 数据,而是跳转,这也是优雅降级的形式。

  2. [A 页面]使用 ajax 方式进行登录,[B 页面]使用正常方式登录,如果不区分,后端需要写两次几乎完全相同的代码,而有了区分,可以把重复的代码消掉。

文章来自:http://www.cnblogs.com/sosoft/p/3793425.html

本文由 Alone88 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: Apr 10, 2019 at 07:56 pm

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LCTF2018-bestphp's revenge 详细题解

    这里只需要关注call_user_func这个回调函数。 call_user_func — 把第一个参数作为回调函数调用,第一个参数是被调用的回调函数,其余参数...

    安恒网络空间安全讲武堂
  • CTF论剑场 Web1-13 WriteUp

    extract — 从数组中将变量导入到当前的符号表,trim — 去除字符串首尾处的空白字符(或者其他字符)。

    安恒网络空间安全讲武堂
  • 带你深入了解NPM——NPM初学者指南

    前段时间,我们邀请了我们“城内”(葡萄城)资深开发工程师刘涛为大家分享了一次干货满满的关于Electron线上公开课,在课程过程中有不少同学对于NPM的概念和用...

    葡萄城控件
  • CTF论剑场 Web14-21 WriteUp

    根据hint信息可以猜测为 /.git/敏感文件泄露,该目录下包含了所有 git 正常工作所需要的信息。 使用 GitHack工具(项目地址:https://...

    安恒网络空间安全讲武堂
  • EDU-CTF TripleSigma题解

    EDU-CTF是台大、交大、台科大三个学校的校赛,题目感觉都不错。TripleSigma这道题的反序列化POP链很有意思,官方wp写的很简单,在这里分析一下。 ...

    安恒网络空间安全讲武堂
  • HackIM 2019-Mime checkr

    原文地址:http://www.mohamed-chamli.me/blog/hackim%202019/Mimecheckr

    安恒网络空间安全讲武堂
  • 某教务管理系统APP逆向分析之协议漏洞

    某大学在使用的一款教务管理系统手机app,为了方便学生查询成绩和选课。我在一次偶然逆向中找到严重漏洞,现在把整个分析流程记录下来。

    安恒网络空间安全讲武堂
  • JDCTF-web writeup

    总共两个判断 第一个函数是 ereg可以用%00绕过 第二个函数 strpos用来判断该字符串中有没有 #biubiubiu 因为#在url中有特殊含义所以得用...

    安恒网络空间安全讲武堂
  • Upload-labs&Upload Bypass Summarize

    暑假闲着也是闲着,去年这个时候刷完了 sqli-labs,今年想着来刷一下 upload-labs 而这次重点不在于题解,而在于总结与归纳 首先我们得明确一点,...

    安恒网络空间安全讲武堂
  • 变量覆盖漏洞的分析与总结

    最近在跟师傅们讨论代码审计技巧的时候,好几个师傅都提到了变量覆盖漏洞,对于这一块的知识我并不是了解很多,网上的说明或多或少的都有一些粗略和不足,所以在这几天闲暇...

    安恒网络空间安全讲武堂

扫码关注云+社区

领取腾讯云代金券