`

Ajax 请求的http头信息特点 x-requested-with

 
阅读更多
很多用到AJAX请求,如何区别一个请求是传统的HTTP请求?还是Ajax请求?网上有很多,这里记录一下,方便以后直接查看,懒人计划,

关键是看http请求头(header)信息中的 x-requested-with 信息项是否有无,如果无该头信息项,取出的是未定义的值,即null,则说明是传统请求;如果存在该头信息项,值是XMLHttpRequest 则说明是Ajax请求;


在JAVA WEB项目,比如在Server端的JSP中判断如下:

if (request.getHeader("x-requested-with") != null  
    && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {  
    out.print("该请求是 AJAX 异步HTTP请求。");  
}else{   
    out.print("该请求是传统的 同步HTTP请求。");  
}  


转自:http://blog.csdn.net/shenzhennba/article/details/9235373


引用
在服务器端判断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 异步请求。


引用
x-requested-with  XMLHttpRequest是Ajax 异步请求方式

使用
request.getHeader("x-requested-with");
为 null,则为传统同步请求;
为 XMLHttpRequest,则为 Ajax 异步请求。


转自:http://bbs.csdn.net/topics/370168085
分享到:
评论

相关推荐

    如何从jQuery的ajax请求中删除X-Requested-With

    X-Requested-With常用于判断是不是ajax请求 但是有时我们会有需要删除X-Requested-With的情况 下面介绍一种方式 js代码 代码如下: $.ajax({ url: ‘http://www.zhangruifeng.com’, beforeSend: function( xhr ) { ...

    服务器端判断Ajax请求

    ### 服务器端判断Ajax请求 在现代Web开发中,异步JavaScript与XML(Ajax)技术...通过分析HTTP请求头,特别是`X-Requested-With`标头,我们可以轻松地识别出Ajax请求。此外,还可以结合其他请求头来进行更细致的分析。

    AJAX 请求区分 $_SERVER['HTTP_X_REQUESTED_WITH'] 小解

    `$_SERVER['HTTP_X_REQUESTED_WITH']` 是一个在 PHP 中常见的用来识别 AJAX(Asynchronous JavaScript and XML)请求的变量。然而,很多人对这个变量的理解并不深入,常常将其误认为是 PHP 内置的自定义变量,而实际...

    Shiro权限控制-区分Ajax请求

    - **如何区分Ajax请求**:可以通过检查HTTP请求头部中的`X-Requested-With`字段来判断一个请求是否为Ajax请求。当该字段存在且值为`XMLHttpRequest`时,可以认为这是一个Ajax请求。 - **如何处理Ajax请求**:我们...

    判断请求头中是否含有某属性来判断是否是ajax请求

    此外,开发者也可以在自定义的Ajax请求中设置其他值,或者完全不使用`X-Requested-With`头部信息,因此依赖这个头部属性来判断是否是Ajax请求并不是绝对可靠的。 如果要检查请求头中是否有某个特定属性,我们可以在...

    自定义shiro实现识别ajax请求的拒绝返回json,还是普通返回页面

    这个方法可能需要根据所使用的 Web 框架来实现,例如在 jQuery 中,可以通过检查请求头中的 `X-Requested-With` 是否为 `XMLHttpRequest` 来识别。 3. **处理无权限访问**: 当 `onAccessDenied()` 被调用时,如果...

    spring security ajax请求与html共存

    通常,这可以通过配置`HttpSecurity`对象来实现,添加对X-Requested-With头的支持,这是一个常见的标记Ajax请求的头信息。 ```java http.authorizeRequests() .antMatchers("/ajax/**").permitAll() // 允许所有...

    php判断是否为ajax请求的方法

    总结一下,PHP中判断Ajax请求的关键在于检查`$_SERVER["HTTP_X_REQUESTED_WITH"]`变量,而这个变量通常是前端通过设置`X-Requested-With`头信息来传递的。通过这种方式,前端和后端可以协同工作,提供流畅的异步体验...

    解决拦截器对ajax请求的拦截实例详解

    在示例代码中,使用了`request.getHeader("X-Requested-With")`来获取请求头中的`X-Requested-With`字段,该字段在大多数现代浏览器的Ajax请求中会被设置为`XMLHttpRequest`。如果这个值匹配,那么可以确定这是一个...

    AJAX 请求区分 $_SERVER[‘HTTP_X_REQUESTED_WITH’] 小解

    受到很多模版代码的影响,大家都以为php有这样一个自定义变量:$_SERVER[‘HTTP_X_REQUESTED_WITH’]. 其实根本不是那么回事. $_SERVER是一个包含诸如头信息(header),路径(path)和脚本位置(script locations)的数组.这...

    ajax跨域请求

    Access-Control-Allow-Headers: X-Requested-With ``` ### 3. jQuery的Ajax跨域 jQuery库提供了方便的API来处理Ajax请求,包括跨域。使用`$.ajax()`或`$.getJSON()`,设置`jsonp`参数为回调函数名,可以实现JSONP...

    自实现的Asp.net AJAX框架的ASMX处理器--支持异步调用Web方法

    1. **请求头部识别**:检查`X-Requested-With`头部,这个头部通常在AJAX请求中设置为`XMLHttpRequest`,用来标识请求是否来自AJAX。 2. **状态代码和响应头**:确保正确设置HTTP状态代码和响应头,以便客户端能够...

    Ajax跨域详解与代码

    add_header Access-Control-Allow-Headers 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; if ($request_method = 'OPTIONS') { add_header '...

    ThinkPHP的success并不跳转页面,而是直接输出json字符串的原因.zip解决ThinkPHP的success并不跳转页面,而是直接输出json字符

    在JavaScript中,使用`$.ajax`或者`fetch`等方法发送异步请求时,服务器会根据请求头中的`X-Requested-With`字段来判断是否为AJAX请求。如果设置了`ajax=1`,或者在请求头中设置了`X-Requested-With: XMLHttpRequest...

    Java后台判断ajax请求及处理过程详解

    在这个例子中,我们首先检查请求头`x-requested-with`来判断是否为AJAX请求。如果用户会话有效,我们允许请求继续传递到下一个过滤器或目标资源。反之,如果会话过期,我们将对AJAX请求返回一个包含特定标识(如`no...

    ajax请求Session失效问题

    关键在于检查HTTP请求头中的`X-Requested-With`字段。这个字段在AJAX请求中会被设置为`XMLHttpRequest`,表明这是一个异步请求。因此,我们可以在服务器端的拦截器(如Struts2的Interceptor)中检查这个字段,以此来...

    jRaiser-1.3.4.js / jRaiser-1.3.4-min.js.rar

    jRaiser 1.3.4 wath's new:  在$.util.parseTpl中添加容错处理,当模板为null时返回undefined,当values为空时返回模板内容。  优化了各种样式操作。... 在$.ajax.send的Ajax请求中增加X-Requested-With的header。

    Ajax请求session失效该如何解决

    这里,我们检查了`x-requested-with`头,这是许多库(如jQuery)在发送Ajax请求时会设置的一个标识。如果发现这是一个Ajax请求,我们就设置响应头`sessionstatus`为"timeout",而不是执行重定向。 接下来是前端...

Global site tag (gtag.js) - Google Analytics