Ajax跨域请求SessionID不相同问题
2017-05-11 00:00
190 查看
我们知道,根据浏览器的保护规则,跨域的时候我们创建的sessionId是不会被浏览器保存下来的,这样,当我们在进行跨域访问的时候,我们的sessionId就不会被保存下来,也就是说,每一次的请求,服务器就会以为是一个新的人,而不是同一个人,为了解决这样的办法,下面这种方法可以解决这种跨域的办法。 我们自己构建一个拦截器,对需要跨域访问的request头部重写 向下面这样:
在ajax 请求是也要加相应的东西
这样我们再跨域测试的时候,就会发现我们的sessionId是一样的了,这样就实现了跨域并且保证在同一个session下。
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest) servletRequest; res.setContentType("textml;charset=UTF-8"); res.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); res.setHeader("Access-Control-Max-Age", "0"); res.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token"); res.setHeader("Access-Control-Allow-Credentials", "true"); res.setHeader("XDomainRequestAllowed", "1"); filterChain.doFilter(servletRequest, servletResponse); }
在ajax 请求是也要加相应的东西
$.ajax({ url:url, //加上这句话 xhrFields: { withCredentials: true }, crossDomain: true, success:function(result){ alert("test"); }, error:function(){ } });
这样我们再跨域测试的时候,就会发现我们的sessionId是一样的了,这样就实现了跨域并且保证在同一个session下。
相关文章推荐
- Ajax请求缓存问题、中文乱码问题、跨域问题
- ajax跨域请求的问题
- Ajax 跨域请求问题
- ajax请求node.js接口时出现跨域问题Access-Control-Allow-Origin
- 解决ajax跨域请求数据cookie丢失问题
- ajax提交相同url,重复发送请求后台,页面无更新的问题解决
- 用iframe设置代理解决ajax跨域请求问题
- 解决webservice用Ajax(jquery)传递客户端请求时ip跨域问题(异步域请求)
- Tomcat下 解决Ajax请求跨域的问题
- 可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题(跨域问题)、options请求报错
- Ajax跨域请求问题
- Ajax相同url的请求,IE缓存问题
- 遇到的问题---jsp的ajax请求相同页面,服务端更新后浏览器仍然显示第一次的内容
- 启用 CORS 来解决这个问题(ajax跨域请求)
- 前端使用Jquery的getJSON方法,后台使用PHP,解决IE和火狐Firefox中存在的跨域ajax请求问题。
- Ajax跨域请求问题
- 遇到的问题---jsp的ajax请求相同页面,服务端更新后浏览器仍然显示第一次的内容
- 解决ajax跨域请求浏览器兼容问题
- WebApp开发:ajax请求跨域问题的解决