servlet---->request.getHeader(“X-Requested-With“);有什么作用?

X-Requested-With是一个自定义HTTP头,用于识别Ajax请求。服务器通过检查该头来处理不同类型的请求,如返回JSON数据或完整HTML。此头有助于区分同步与异步请求,以及实施基本安全策略。
摘要由CSDN通过智能技术生成

X-Requested-With 是一个自定义的HTTP请求头,主要用于在服务器端识别请求是由Ajax技术发起的还是由其他技术发起的。这个请求头是由浏览器或客户端应用程序添加的,因此其值可能取决于发送请求的客户端或者开发者的选择。

如果请求不是通过JavaScript的 XMLHttpRequest 对象发出的,那么 X-Requested-With 头部可能不会被设置。例如,直接在浏览器地址栏中输入URL或使用HTML表单提交的请求通常不会包含 X-Requested-With 头部。

request.getHeader("X-Requested-With") 是一个在服务器端用于检测HTTP请求头部(Header)中的 X-Requested-With 字段的方法。这个字段通常用来识别请求是由哪种类型的客户端发出的,尤其是区分同步请求和异步请求(如Ajax请求)

主要作用

1.区分请求类型:

X-Requested-With 的值是 XMLHttpRequest 时,这通常意味着请求是一个Ajax请求,由JavaScript发起的异步HTTP请求。

2.增强服务器逻辑:

服务器可以根据这个头部值来决定返回哪种类型的响应。例如,对于Ajax请求,服务器可能只返回必要的数据(如JSONXML),而对于普通的同步请求,服务器可能会返回完整的HTML页面。

3.安全性考虑:

有时,X-Requested-With 字段被用作一种简单的安全措施,帮助识别和阻止不是通过正常用户界面发起的请求(虽然这个字段可以被伪造,因此不应该仅依赖于这个字段来进行安全决策)。

4.示例场景
如果你正在编写一个Web应用,你可能会在服务器端的代码中看到如下的判断:

if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
    // 这是一个Ajax请求,返回JSON或者其他数据格式
} else {
    // 这是一个普通的同步请求,返回完整的HTML页面
}

这段代码检查请求是否包含 X-Requested-With: XMLHttpRequest 头部,如果包含,服务器将理解这是一个Ajax请求,并且可能会以不同的方式处理这个请求。

总而言之呢~👍
使用 request.getHeader("X-Requested-With") 方法的目的是为了让服务器能够识别请求的发起方式,并据此决定如何处理请求。这在创建响应用户操作的交互式Web应用时尤其有用,因为它可以帮助服务器区分何时应该返回完整的页面,何时只需返回部分数据更新页面

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.ischoolbar.programmer.interceptor; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.ischoolbar.programmer.entity.User; /** * 登录过滤拦截器 * @author llq * */ public class LoginInterceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { // TODO Auto-generated method stub String url = request.getRequestURI(); //System.out.println("进入拦截器,url = " + url); Object user = request.getSession().getAttribute("user"); if(user == null){ //表示未登录或者登录状态失效 System.out.println("未登录或登录失效,url = " + url); if("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){ //ajax请求 Map<String, String> ret = new HashMap<String, String>(); ret.put("type", "error"); ret.put("msg", "登录状态已失效,请重新去登录!"); response.getWriter().write(JSONObject.fromObject(ret).toString()); return false; } response.sendRedirect(request.getContextPath() + "/system/login"); return false; } return true; } }给代码加上注释
最新发布
06-04

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值