前言:
现时咱们对“ajaxget请求格式”大致比较注重,咱们都需要学习一些“ajaxget请求格式”的相关内容。那么小编同时在网上搜集了一些关于“ajaxget请求格式””的相关知识,希望各位老铁们能喜欢,朋友们快快来了解一下吧!其实蛮简单的,网上资料也多,就是工作中遇到了,记录一下。
现在比较流行的开发方式,不管前端是APP、网页、小程序,后端是微服务、分布式,涉及到登录登出,用户信息方面,多是基于JWT的Token方式,后端根据业务情况使用Filter或者Interceptor,采用纯解密JWT或基于缓存(本地、Redis等)等方案来进行整个生命周期的管理。
这里过来的HTTP请求基本上都是Ajax请求。
不过在很多ToB项目、老系统中,基于Session的用户信息管理,HTTP请求中,页面、Ajax请求混杂。
我这两天就遇到了这个情况:
1、要用Filter针对几个请求做处理。
2、不符合要求的必须重定向到另一个服务提供的接口。
3、基本都是页面请求,唯有一个是Ajax请求。
页面请求的重定向比较简单,
response.sendRedirect(URL);
或者
request.getRequestDispatcher(URL).forward(request, response);
二者的区别就不再说了,很基础的知识。
我遇到的问题就是,这是一个Ajax请求,而重定向的URL是个页面,请求方必须跳转到那个页面进行后续操作。
这情况其实就很烦了,如果重定向的URL也是个接口,这事好办了,服务端直接HTTP请求过去,拿到结果返回给请求方就行了。
如果请求方是个普通的页面请求也方便了,重定向即可。
现在Ajax-服务端-重定向页面,这种局面,就需要前后端同时改造。
后端Filter:
import java.io.IOException;import java.util.Objects;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DemoFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; String url = req.getServletPath(); // TODO 排除不需要过滤的请求// if (不需要过滤的请求) {// chain.doFilter(request, response);// } // Ajax请求 if (Objects.nonNull(req.getHeader("X-Requested-With")) && req.getHeader("X-Requested-With").equals("XMLHttpRequest")) { // TODO 过滤逻辑 // 重定向 // 设置与前端约定好的状态 resp.setStatus(401); // 设置与前端约定好的 是否跳转标识,0不跳转,1跳转 resp.setIntHeader("redirectFlag", 1); resp.setHeader("redirectUrl", "重定向的URL"); resp.flushBuffer(); } else { // TODO 非Ajax请求的处理 } }}
前端就比较简单了,接收到响应后,根据status、redirectFlag、redirectUrl进行相应处理即可。
标签: #ajaxget请求格式