精华内容
下载资源
问答
  • session不共用
    2019-08-17 11:16:28
    1. 不使用session ,换用cookie
    2. session存在数据库(Mysql等)
    3. session存memcache或者redis
    4. nginx中的ip_hash技术
    5. upstream_hash
      更多请点击:https://www.cnblogs.com/baby123/p/5110239.html
    更多相关内容
  • 现在做的项目是前后台...ajax跨域和跨域后session不一致一起解决。亲测有效!   一、ajax跨域请求 Java后台解决方式,请求端无需任何修改。 1.添加jar包:cors-filter-1.7.jar, java-property-utils-1.9.jar...

    现在做的项目是前后台分离,并且前台后台之间还有个中间层,前台是混合APP,ajax请求到中间层,中间层再http请求后台。

    对后台没有任何修改。ajax跨域和跨域后session不一致一起解决。亲测有效!

     

    一、ajax跨域请求

    Java后台解决方式,请求端无需任何修改。

    1.添加jar包:cors-filter-1.7.jarjava-property-utils-1.9.jar

    2.XML添加配置:

    <!-- 跨域配置-->    
    <filter>
            <!-- The CORS filter with parameters -->
            <filter-name>CORS</filter-name>
            <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
            
            <!-- Note: All parameters are options, if omitted the CORS 
                 Filter will fall back to the respective default values.
              -->
            <init-param>
                <param-name>cors.allowGenericHttpRequests</param-name>
                <param-value>true</param-value>
            </init-param>
            
            <init-param>
                <param-name>cors.allowOrigin</param-name>
                <param-value>*</param-value>
            </init-param>
            
            <init-param>
                <param-name>cors.allowSubdomains</param-name>
                <param-value>false</param-value>
            </init-param>
            
            <init-param>
                <param-name>cors.supportedMethods</param-name>
                <param-value>GET, HEAD, POST, OPTIONS</param-value>
            </init-param>
            
            <init-param>
                <param-name>cors.supportedHeaders</param-name>
                <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
            </init-param>
            
            <init-param>
                <param-name>cors.exposedHeaders</param-name>
                <!--这里可以添加一些自己的暴露Headers   -->
                <param-value>X-Test-1, X-Test-2</param-value>
            </init-param>
            
            <init-param>
                <param-name>cors.supportsCredentials</param-name>
                <param-value>true</param-value>
            </init-param>
            
            <init-param>
                <param-name>cors.maxAge</param-name>
                <param-value>3600</param-value>
            </init-param>
    </filter>

    <filter-mapping>
            <!-- CORS Filter mapping -->
            <filter-name>CORS</filter-name>
            <url-pattern>/*</url-pattern>

    </filter-mapping>

    注:添加为第一个filter。

     

    二、跨域后session不共用解决方式

    1,继承Filter类的类中,doFilter方法添加一下代码:

           /*因跨域后session不一致,添加代码 begin ----*/
            HttpServletRequest request2 = (HttpServletRequest) request;
            HttpServletResponse response2 = (HttpServletResponse) response;
            response2.setHeader("Access-Control-Allow-Origin", request2.getHeader("Origin"));
            response2.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
            response2.setHeader("Access-Control-Max-Age", "3600");
            response2.setHeader("Access-Control-Allow-Headers", "x-requested-with");
            response2.setHeader("Access-Control-Allow-Credentials","true"); //是否支持cookie跨域
            /* ----end----*/

    2,ajax请求中添加参数:

            xhrFields: {
                 withCredentials: true
            },
           crossDomain: true,

    添加在success : function(data) {}前。

     

    展开全文
  • 主要介绍了PHP实现负载均衡下的session共用功能,结合实例形式分析了php基于memcache的session共享相关实现技巧,需要的朋友可以参考下
  • 沙雕问题(在确认session的get/setAttribute中key值对应正确之前请不要看) 前提一:浏览器会话期的 ...客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索到,可能 会新建一个),如

    沙雕问题(在确认session的get/setAttribute中key值对应正确之前请不要看)

    前提一:浏览器会话期的 cookie被称为会话cookie。
    前提二:当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里
    是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此
    客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能
    会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此
    session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的
    字符串,这个 session id将被在本次响应中返回给客户端保存。
    前体三:我把浏览器设置为不读取和保存任何session
    
    
    
    我的session之所以不能用:
    	浏览器中阻止了任何cookie,因此每次请求服务器都从浏览器中找不到存有session_id
    	的会话cookie,因此每次都会重新创建一个...因此,取不到
    
    展开全文
  • 主要介绍了php实现多站点共用session实现单点登录的方法,结合实例形式详细分析了php多站点共用seeion实现单点登录相关原理及操作注意事项,需要的朋友可以参考下
  • 主要介绍了PHP和NodeJs开发的应用如何共用Session的相关资料及思路,需要的朋友可以参考下
  • NULL 博文链接:https://vearn.iteye.com/blog/376407
  • 解决session不共享
  • 基本概念我就说了。session是这样运行的:用户A访问站点Y,如果站点Y执行了session_start();(以下假定session_start()总是存在)那么会产生一个 session_id,这个session id一般会以COOKIE的形式保存到用户A(我们...

    要实现多域名共享session,首先就得了解SESSION的运行机制。基本概念我就不说了。

    session是这样运行的:

    用户A访问站点Y,如果站点Y执行了session_start();(以下假定session_start()总是存在)那么会产生一个 session_id,这个session id一般会以COOKIE的形式保存到用户A(我们可以通过在php.ini里设置session.use_only_cookies为1,强制SESSION ID必须以COOKIE传递。)。这时候SESSION ID表现为$_COOKIE['PHPSESSID'];(PHPSESSID可用session_name()函数来修改)

    用户A接着访问,这个session id($_COOKIE['PHPSESSID'])就会在A每次访问Y的时候传送到站点Y。

    在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到session id,然后通过session id,来获得与SESSION数据的关联,并返回SESSION数据。

    可能聪明的你已经想到了,既然服务器端和客户端之间的SESSION是通过一个SESSION ID来联系,并且SESSION数据是以普通文件的形式保存在一个特定的文件夹里。

    那么我们要实现不同域名,只需要满足以下两个条件:

    1)不同域名的SESSION数据目录统一到一起,或者同步更新。

    2)对同一个客户,使用统一的一个SESSION ID

    第一个条件的实现。

    如果是同一台服务器,就不需要进行任何设置了。

    如果是集群/分布式的,那么我想也不需要我来说了。。能做分布式应用的,在目录共享方面的经验应该比我丰富。我也没有进行过多服务器的测试,主客观条件的原因都有。

    我在这里主要是想说一下第二个条件——使不同的域名,拥有统一的SESSION ID。

    那我们应该怎么统一呢?

    首先必须在不同域名之间传递这个SESSION ID,且由于 cookie必须是针对域名的,所以传递动作是由客户端来完成。如果传递过程不是由客户端来完成,那么接受传递的域名就不知道针对的是哪个客户。

    其次就是修改接受传递的域名下的SESSION ID。

    如何传递:

    HTML里,我们可以使用很多种方法。例如

    iframe

    或者.js

    或者是一个img html元素

    %E2%80%9D%22

    只要能调用某个地址,就行。

    在wml里,由于wml script的特点,我们无法使用script这样的形式来调用,而wml里也没iframe..但是我们还是可以通过img来实现传递的。

    如何修改:

    既然SESSION ID一般情况下是通过COOKIE来传递,那么我们只需要通过传递$_COOKIE['PHPSESSID'];即可。但是如果PHPSESSID被session_name改变了,我们又得修改setcookie中的PHPSESSID..这样就会变得很麻烦。。所以我们可以选择一个session特有的函数session_id来修改$_COOKIE['PHPSESSID'];

    需要注意的几点:

    如果session.use_only_cookies为0(PHP默认),那么session id有可能会以url或其他形式传递

    session_id()和session_name必须在session_start()前使用

    以下是我写的一个简单的实现多域名的类。如果上面的看不太明白,可以看看我的这个多域名类。这个类是在HTML下以iframe形式实现的。

    /*

    使用:

    服务器A,服务器B,在A的index.php登陆,在B里建立一个接收SESSION的文件,例如ses_get.php

    A的index.php做如下修改

    最开始加上session_start();

    而ses_get.php则在开头写上mdSession::_get();

    @作者:surfchen@gmail.com http://www.surfchen.org/*/

    function mdSession()

    {

    }function set($urls)

    {if (!is_array($urls))

    {$urls=array($urls);}foreach ($urls as $value)

    {echo '';}return true;}function get()

    {session_id($_SERVER['QUERY_STRING']);session_start();return true;}function _set($urls)

    {$obj=new mdSession();return $obj->set($urls);}function _get()

    {$obj=new mdSession();return $obj->get();}

    }?>

    index.php :

    include "mdSession.php";

    session_start();

    $_SESSION['php']="yogurt8";

    mdSession::_set('http://www.b.com/ses_get.php');

    var_dump($_SESSION);

    ?>

    ses_get.php

    include "mdSession.php";

    mdSession::_get();

    ?>

    b.php :

    session_start();

    var_dump($_SESSION);

    先访问 http://www.a.com/a.php 然后在 http://www.b.com/b.php 看效果

    在firefox 与谷歌浏览器是没问题,但在 Ie 下还是不行

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • Firefox:编辑快捷方式的目标,后面加上 -p -no-remote Chrome:打开新的隐身窗口 IE:文件 --&gt; 新的会话
  • 前后端分离项目 需要将后端的参数传到页面上,如果一台机器是可以的,部署两台机器的时候参数传到页面上是空的 原因是:两台机器的session不是公用的 解决方式: 加一个依赖(实现session的共享) <...
  • 常用跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间,另一种是a.com b.com之间,这几天总结了...
  • 两个Spring Boot项目在同一个服务器上如何解决Session共用问题情况一:两个项目只需要SessionID,内容都通过SessionID保存在Redis中问题产生背景如果在header中没有SessionID问题解决办法情况二:两个项目需要共用...
  • ASP.NET实现多域名多网站共享Session值 1、实现功能:可设置哪些站点可以共享Session值,这样就防止别人利用这个去访问 要想实现这个功能就必须得把Session值 放入数据库中, 所有我们先在VS命令工具下注册一个 命名...
  • 前面谈过session相关配置,在开发的时候,常需要跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间...
  • Tomcat集群Session全局复制(集群内每个tomcat的session完全同步)【会影响集群的性能呢,建议】 根据请求的IP进行Hash映射到对应的机器上(这就相当于请求的IP一直会访问同一个服务器)【如果服务器宕机了,会...
  • 在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息。 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也会在同一个session实例...
  • 实现原理:把session id设置到本地的cookie。 如下: 复制代码 代码如下: $currentSessionID = session_id(); session_id($currentSessionID ); 以下是实现代码,分为http与https两部分。 1,http部分: 复制代码 ...
  • 关于cookie和session的机制就多记录,直接进入主题。今天在网上碰到一个问题,说想让php和js共用cookie然后实现一个功能,具体什么功能倒是忘记了,不过这个东西研究下顺便做点记录还是必要的,毕竟是比较常用的。...
  • localhost和127.0.0.1同源的问题

    千次阅读 2019-04-28 17:35:56
    昨天晚上调了一个别人的代码,通过tomcat跑起来了,网页也可以进行正常的访问,但是,出现了一个bug,我在浏览器输入...问题出就出在,验证码生成了,也存到session中了,但是当登录请求发出时,后台的session中取...
  • python post共用一个session

    千次阅读 2017-03-18 22:09:26
    这在python中当然是独立的两次网络请求,问题是,默认情况下,这两次独立的网路请求不是共用一个session,所以即使第一个登录动作成功,第二个post请求也不会提交成功(因为会认为没有登录)。二、解决方案1.登录时...
  • 这次给大家带来PHP实现负载均衡下的session共用案列详解(附代码),PHP实现负载均衡下的session共用的注意事项有哪些,下面就是实战案例,一起来看一下。首先说一下负载均衡,相信大家都知道负载均衡可以很好地解决...
  • 现在稍微大一点的网站基本上都有好几个子域名,比如www.xz577.com, xz577.com, vip.xz577.com,这些网站如果需要共用用户登录信息,那么就需要做到session共享,当然前提是有相同的主域名。 PHP的session原理? ...
  • Java跨域访问sessionid一致问题处理

    千次阅读 2019-05-04 23:39:53
    导语:直接上处理方法,具体原理请自行查阅资料.(共用两种方法解决) 常见情景:设置进session中的值,在第二次请求时获取出来的是:null 第一种方法:针对请求较少的需求: 一.服务器段: 设置可以支持跨域请求...
  • 奇怪的是同一个网站下的两个页面Session能同步。比如A页面登录后B页面可以得到Session值,但是B页面登录后A页面却得到,百思不得其解。在一个不经意的情况下输出两个页面的UserHostIp后发现,一个是locahost,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,318
精华内容 11,727
关键字:

session不共用