在一次做非常复杂的ajax应用时,如果一个会话已经超时,但是此时再通过ajax请求,那么ajax返回的则是一个登陆页面的html,那这下就惨了,页面上而已就乱了,那么,能否在Java端,如拦截器里判断客户的的请求是否是ajax请求呢,经过查询,能.

普通请求与ajax请求的报文头不一样,通过如下

String requestType = request.getHeader("X-Requested-With");

如果requestType能拿到值,并且值为XMLHttpRequest,表示客户端的请求为异步请求,那自然是ajax请求了,反之如果为null,则是普通的请求

在服务器端判断request来自Ajax请求(异步)还是传统请求(同步):

两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数

1、传统同步请求参数

accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

accept-charset  gb2312,utf-8;q=0.7,*;q=0.7

accept-encoding  gzip,deflate

accept-language  zh-cn,zh;q=0.5

cache-control  max-age=0

connection  keep-alive

cookie  JSESSIONID=1A3BED3F593EA9747C9FDA16D309AF6B

host  192.168.101.72:8080

keep-alive  300

referer  http://192.168.101.72:8080/htfsweb/spring_security_login

user-agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)

2、Ajax 异步请求方式

accept  */*

accept-language  zh-cn

referer  http://192.168.101.72:8080/scm/?token=3b194bff23bf6acecea5661ac8e14c51

x-requested-with  XMLHttpRequest

content-type  application/x-www-form-urlencoded,text/JavaScript

accept-encoding  gzip, deflate

user-agent  Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 598; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)

host  192.168.101.72:8080

content-length  233

connection  Keep-Alive

cache-control  no-cache

cookie  CSS=undefined; JSESSIONID=1B9AC25036290F7FB6823CCE1A24E541

可以看到 Ajax 请求多了个 x-requested-with ,可以利用它,request.getHeader("x-requested-with"); 为 null,则为传统同步请求,为 XMLHttpRequest,则为 Ajax 异步请求。

服务器与网页之间异步,在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)...相关推荐

  1. ajax异步查询demo,ASP.NET中AJAX的异步加载(Demo演示)

    此次的demo是一个页面,页面上有两行字,然后后面用ajax,使用一个下拉框去替换第一行文字[/code] 第一个是被替换的网页 var xmlhttprequest; function create ...

  2. 游戏服务器开发的基本体系与服务器端开发的一些建议

    刚开始时以为做游戏服务器和做web差不多,但是经过一段时间之后,才发现代码太多,太乱了,一看代码都想重构,都是踩着坑往前走.这里我把一些游戏开发方面的东西整理一下,希望能对那些想做游戏服务器开发的朋友 ...

  3. 1 游戏服务器开发的基本体系与服务器端开发的一些建议

    近年来,我身边的朋友有很多都从web转向了游戏开发.他们以前都没有做过游戏服务器开发,更谈不上什么经验,而从网上找的例子或游戏方面的知识,又是那么的少,那么的零散.当他们进入游戏公司时,显得一脸茫然. ...

  4. (75)游戏服务器开发的基本体系与服务器端开发的一些建议

    转自:http://www.jb51.net/article/119274.htm   侵权删 近年来,我身边的朋友有很多都从web转向了游戏开发.他们以前都没有做过游戏服务器开发,更谈不上什么经验, ...

  5. 网页上传至服务器失败,网页上传到云服务器失败

    网页上传到云服务器失败 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云服务 ...

  6. 网络知识入门,探讨DNS服务器在网页请求中的作用(二)

    上一篇文章讲到网络请求是基于http协议传输的,消息请求包含了"对什么"和"做什么操作",于是一个网页请求就这么发送出去了.但是在发送消息之前,我们还需要对域名 ...

  7. 进虚拟ftp服务器跳网页,ftp服务器总是自动跳到网页

    ftp服务器总是自动跳到网页 内容精选 换一换 ENI负载均衡 ( ENI LoadBalancer )使用弹性负载均衡器直通容器,使部署在容器中的业务时延降低.性能无损耗.ELB实例创建出来后没法更 ...

  8. 建立一个端口为8189的服务器,它无限期等待直到有客户连接这个端口。若客户在网上发送正确的请求连接了这个端口,则服务器与客户之间就建立了一个可靠的连接。

    建立一个端口为8189的服务器,它无限期等待直到有客户连接这个端口.若客户在网上发送正确的请求连接了这个端口,则服务器与客户之间就建立了一个可靠的连接. 一服务器端的程序 (1)class Threa ...

  9. 微信小程序和H5网页之间有什么区别?

    微信小程序和H5网页之间有什么区别 本博主语录:小程序和H5网页的主要开发语言都是 JavaScript ,所以通常小程序的开发会被用来同普通的网页开发来做对比.两者有很大的相似性,对于前端开发者而言 ...

最新文章

  1. $state 新标签页
  2. 【Vegas原创】outlook发送时,报550 5.7.1 client does not have permissions to send as this sender解决方法...
  3. centos7 yum安装 c c++ gcc gcc-c++
  4. 工业环境老鼠目标检测
  5. c++结构体定义和使用_[day day go]结构体amp;给结构定义方法
  6. quick 关于触摸的问题
  7. 农民丰收节交易英德海奇组委会议-陈业海:功能农业大健康
  8. 垂直居中及容器内图片垂直居中的CSS解决方法
  9. mysql数据库(10):数据 备份
  10. 转帖Masonry介绍与使用实践(快速上手Autolayout)
  11. L1-014. 简单题-PAT团体程序设计天梯赛GPLT
  12. 哈希表与区块链的简单介绍
  13. HTTP API 设计指南(响应部分)
  14. CentOS 7.4 安装Nginx
  15. 汇编语言在线视频教程
  16. 抽象代数之拉格朗日定理的证明
  17. 水星无线网卡配置AP模式连接无线信号上不了网,怎么办?
  18. android 行政区域,Android高德之旅(14)行政区划搜索
  19. 旅游吧!我在这里 ——旅游相册POI搜索:找回你的足迹
  20. python日历_用python做日历

热门文章

  1. 浙江省高等学校计算机等级考试有什么用,06秋年秋浙江省高等学校计算机等级考试试卷(三级数据库技术及应用)...
  2. QString与中文问题
  3. Ubuntu中用gedit保存文件失败的解决办法
  4. Iterator模式
  5. linux eclipse 头文件路径,Eclipse CDT标准库头文件设置
  6. 用计算机MR,计算机上的【MC、MR、M
  7. listview刷新_Flutter NestedScrollView 滑动折叠头部下拉刷新效果
  8. LSGO软件技术团队2015~2016学年第七周(1012~1018)总结
  9. 【转】2.2【MySQL】运行原理(二):InnoDB 内存结构、磁盘结构及update sql执行过程分析
  10. 【转】3.4(译)构建Async同步基元,Part 4 AsyncBarrier