在服务器端判断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 XXX
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 xxx
x-requested-with XMLHttpRequest //表明是AJax异步
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常用于判断是不是ajax请求 但是有时我们会有需要删除X-Requested-With的情况 下面介绍一种方式 js代码 代码如下: $.ajax({ url: ‘http://www.zhangruifeng.com’, beforeSend: function( xhr ) { ...
通常情况下,Ajax请求会包含一个特殊的标头`X-Requested-With`,其值通常设置为`XMLHttpRequest`,以此标识这是一个Ajax请求。 #### 示例请求头对比 - **传统请求示例**: - `Accept`: `text/html,application/...
此外,开发者也可以在自定义的Ajax请求中设置其他值,或者完全不使用`X-Requested-With`头部信息,因此依赖这个头部属性来判断是否是Ajax请求并不是绝对可靠的。 如果要检查请求头中是否有某个特定属性,我们可以在...
- **如何区分Ajax请求**:可以通过检查HTTP请求头部中的`X-Requested-With`字段来判断一个请求是否为Ajax请求。当该字段存在且值为`XMLHttpRequest`时,可以认为这是一个Ajax请求。 - **如何处理Ajax请求**:我们...
总结一下,PHP中判断Ajax请求的关键在于检查`$_SERVER["HTTP_X_REQUESTED_WITH"]`变量,而这个变量通常是前端通过设置`X-Requested-With`头信息来传递的。通过这种方式,前端和后端可以协同工作,提供流畅的异步体验...
在 PHP 服务器端,我们可以检查 `$_SERVER['HTTP_X_REQUESTED_WITH']` 是否存在以及其值,来判断请求是否来自 AJAX。如果值为 "XMLHttpRequest",那么我们可以确定这是一个 AJAX 请求。这在处理不同类型的请求逻辑,...
这个方法可能需要根据所使用的 Web 框架来实现,例如在 jQuery 中,可以通过检查请求头中的 `X-Requested-With` 是否为 `XMLHttpRequest` 来识别。 3. **处理无权限访问**: 当 `onAccessDenied()` 被调用时,如果...
在这个例子中,我们首先检查请求头`x-requested-with`来判断是否为AJAX请求。如果用户会话有效,我们允许请求继续传递到下一个过滤器或目标资源。反之,如果会话过期,我们将对AJAX请求返回一个包含特定标识(如`no...
通常,这可以通过配置`HttpSecurity`对象来实现,添加对X-Requested-With头的支持,这是一个常见的标记Ajax请求的头信息。 ```java http.authorizeRequests() .antMatchers("/ajax/**").permitAll() // 允许所有...
如果jQuery的AJAX请求是通过`iframe`加载的,`HTTP_X_REQUESTED_WITH`头将不会被传递,因此无法准确判断请求类型。在这种情况下,开发者可能需要寻找其他方法,比如设置特定的请求头或者查询字符串参数来识别此类...
在示例代码中,使用了`request.getHeader("X-Requested-With")`来获取请求头中的`X-Requested-With`字段,该字段在大多数现代浏览器的Ajax请求中会被设置为`XMLHttpRequest`。如果这个值匹配,那么可以确定这是一个...
这段代码检查了`$_SERVER`超全局变量中的`HTTP_X_REQUESTED_WITH`,如果它的值是`XMLHttpRequest`,那么我们可以确定这是一个Ajax请求。在ThinkPHP框架中,可以使用内置的方法来实现同样的功能: ```php use think\...
通过这段代码可以判断用户的请求是否来自AJAX XMLHttpRequest,以区别普通post,get和ajax function isAjax() { return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == '...
Access-Control-Allow-Headers: X-Requested-With ``` ### 3. jQuery的Ajax跨域 jQuery库提供了方便的API来处理Ajax请求,包括跨域。使用`$.ajax()`或`$.getJSON()`,设置`jsonp`参数为回调函数名,可以实现JSONP...
在JavaScript中,使用`$.ajax`或者`fetch`等方法发送异步请求时,服务器会根据请求头中的`X-Requested-With`字段来判断是否为AJAX请求。如果设置了`ajax=1`,或者在请求头中设置了`X-Requested-With: XMLHttpRequest...
虽然`HTTP_X_REQUESTED_WITH`头是AJAX请求的常见标志,但并非所有库或所有情况都会设置这个头。因此,为了更健壮的实现,你可能还需要结合其他策略,比如通过检查请求参数、请求URL等来辅助判断。 5. **设计兼容性...
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 '...