session跨域丢失问题

配置一个 filter

 1 package com.psm.filter;
 2
 3 import javax.servlet.*;
 4 import javax.servlet.http.HttpServletRequest;
 5 import javax.servlet.http.HttpServletResponse;
 6 import java.io.IOException;
 7
 8 /**
 9  * 添加Ajax Access-Control-Allow-Origin跨域请求
10  *
11  * @author
12  * @create 2018-02-26 17:00
13  **/
14 public class VisitFilter implements Filter {
15
16     @Override
17     public void init(FilterConfig filterConfig) throws ServletException {
18
19     }
20
21     @Override
22     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
23         HttpServletResponse res = (HttpServletResponse) servletResponse;
24         HttpServletRequest request=(HttpServletRequest)servletRequest;
25         res.setContentType("textml;charset=UTF-8");
26         res.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
27         res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
28         res.setHeader("Access-Control-Max-Age", "0");
29         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");
30         res.setHeader("Access-Control-Allow-Credentials", "true");
31         res.setHeader("XDomainRequestAllowed","1");
32         filterChain.doFilter(servletRequest,servletResponse);
33     }
34
35     @Override
36     public void destroy() {
37
38     }
39 }

添加下面这两个

response.setHeader("Access-Control-Allow-Credentials","true"); //是否支持cookie跨域
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

原文地址:https://www.cnblogs.com/oldzhang1222/p/8491957.html

时间: 2024-08-11 06:05:43

session跨域丢失问题的相关文章

使用Spring Session和Redis解决分布式Session跨域共享问题

前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 文末分享了我一部分私人收藏 有兴趣的可以收藏看一下的 都是架构师进阶的内容 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session共享功能,将Sessi

Redis实战和核心原理详解(5)使用Spring Session和Redis解决分布式Session跨域共享问题

Redis实战和核心原理详解(6)使用Spring Session和Redis解决分布式Session跨域共享问题 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提

聊一聊实现Session跨域的问题

本文来自有着丰富经验的大神和一个小白的对话! 为了阅读方便,小白代号Q, 大神代号W Q: 怎么实现session跨域? W: 别用系统session即可 Q: 那用什么session ?自己存session? W: 自己有啥不行吗 系统的方案是改配置,允许一些域. 不过没用直接自己处理会话来的干脆实际 会话信息就是你说的session 默认系统是跟域名绑定的.但是跨域的本质是后端多系统共享,所以在后端处理数据存取最为直接 路人甲: 现在不是流行 token吗 ? 这不就是一个另类的sessio

session跨域共享解决方案

要让session跨域共享,需要解决三个问题: 1.通过什么方法来传递session_id? 2.通过什么方法来保存session信息? 3.通过什么方法来进行跨域 一.传递session_id有4种方法 1. 通过cookie 2. 设置php.ini中的session.use_trans_sid=1,让PHP自动跨页传递session id 3. 手动通过url或隐藏表单传值 4. 用文件或数据库方式传递,在通过其他key对应取值 二.保存session信息有3种方法 1.数据库 2.mem

java:sso(单点登录(single sign on),jsp文件动静态导入方式,session跨域)

1.jsp文件导入: 2.session跨域: 3.sso(单点登录(single sign on): sso Maven Webapp: LoginController.java: package com.sso.demo.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans

【分布式系列】session跨域及单点登录解决方案

Cookie机制 Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息.让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器:接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Res

session跨域和ajax跨域名

后台跨域和ajax跨域名: 后台跨域: www.baidu.com   主域名(一级域名一般以www开头) news.baidu.com   二级域名 (a.test.com和b.test.com有相同的域,和test.a.com不是同一个域) 同一个域下可以使用setcookie( '名字' , 'session_id' , 'time()+3600' , '/' , '域' );来存储session_id. 例如:a.php在a.test.com下    b.php在b.test.con下

php实现SESSION跨域

稍微大一点的网站,通常都会有不只一个服务器,每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二级域名,比如www.a.com.i.a.com.bbs.a.com.而一个整体性强的网站,用户系统是统一的,即一套用户名.密码在整个网站的各个子系统中都是可以登录使用的.各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可.但还存在一个问题,就是用户在i.a.com登录之后,进入www.a.com时,仍然需要重新登录,基本的通行

thinkphp session跨域

1 .在config.PHP中添加 'SESSION_OPTIONS'=>array('domain'=>'.caizhimofang.con'),//session配置    'COOKIE_DOMAIN'=>'.caizhimofang.con',//cookie域名 2.在入口文件 index.php中添加 ini_set('session.cookie_domain', ".caizhimofang.com");