更改jq源码,支持跨域访问携带cookie
后台的就不多说了
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info("add -------------------------- *"); // response.addHeader("Access-Control-Allow-Credentials", "true"); // response.addHeader("Access-Control-Allow-Origin", "*"); // response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin")); response.setHeader("Access-Control-Allow-Credentials", "true"); // response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); // response.setHeader("Access-Control-Max-Age", "3600"); // response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); return super.preHandle(request, response, handler); }
随便继承一个过滤器,设置好重要的两个参数就可以了,问题是*现在好像不给用了。
主要说一下jq,默认是不携带cookie的,其实每个ajax都可以设置携带,但是遇到jq.tree,jq.dalog等大量简写的ajax请求,我是不会写了。
找到jq.js中起初的原生ajax生成代码,添加可携带cookie参数,并设置为true,如下
jQuery.ajaxSettings.xhr = function() { try { var xhr = new XMLHttpRequest(); xhr.withCredentials = true; return xhr } catch( e ) {} };
目测可行