zoukankan      html  css  js  c++  java
  • nginx缓存页面后,串会话问题的解决方案

    用的Nigix  后面挂了二个Tomcat是springMVC  session存在Redis的项目

    但是上线以后反应A用户添加数据,变成B用户的,网上查的方案如下:

    解决方案,nginx提供proxy_hide_header的指令,可以去掉相关的响应头信息在nginx.conf文件添加以下配置:

    proxy_hide_header Set-Cookie;

    server {
            listen       8080;
            server_name  www.abc.com;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                proxy_pass http://www.abc.com;
            proxy_hide_header Set-Cookie;
            }
    }

    另外,由于j2ee应用可能默认在用户第一次访问时,重写链接,加上jsessionid=...,也会导致串会话,

    需要在web.xml中加上:

    <tracking-mode>COOKIE</tracking-mode>

      <session-config>
        <session-timeout>120</session-timeout>
        <tracking-mode>COOKIE</tracking-mode>
      </session-config>

    另外附加一下session-conifg配置详情

    在许多情况下,都可以在Java EE中直接使用HTTP会话,不需要添加显示地配置。不过可以在部署描述符中配置它们,并且出于安全地目的也应该配置。在部署描述符中使用<session-config>标签配置会话。
    样例

    <session-config>
        <session-timeout>30</session-timeout>
        <cookie-config>
            <name>JSESSIONID</name>
            <domain>example.org</domain>
            <path>/shop</path>
            <comment>
                <!-- some information -->
            </comment>
            <http-only>true</http-only>
            <secure>false</secure>
            <max-age>1800</max-age>
        </cookie-config>
        <tracking-mode>COOKIE</tracking-mode>
        <tracking-mode>URL</tracking-mode>
        <tracking-mode>SSL</tracking-mode>
    </session-config>


    了解会话属性组

    所有<session-config>和<cookie>中的标签都是可选的,但如果使用了这些标签,那么必须按照本例中的顺序添加到部署描述符中(除了被忽略的标签)。标签<session-timeout>指定了会话在无效之前,可以保持不活跃状态的时间,以分钟为单位。如果该值小于等于0,那么会话将永远也不过期。
    <tracking-mode>用于表示容器应该使用哪种技术追踪会话ID,它的合法值有:
       URL----容器将只在URL中内嵌会话ID 。不使用cookie或SSL会话ID。这种方式非常不安全。
       COOKIE -----容器将使用会话cookie追踪会话ID 。该技术非常安全。
       SSL ----容器将使用SSL会话ID作为HTTP会话ID。该方法是最安全的方式,但要求使用的所有请求都必须是HTTPS请求。
    可以为<tracking-mode>配置多个值,表示容器可以使用多种策略。
    只有在追踪模式中使用了COOKIE时,才可以使用<cookie-config>标签。
     通过标签<name>可以自定义会话cookie的名字。默认值为JSESSIONID
    标签<domain>和<path>对应着cookie的Domain和Path特性。Web容器已经设置了正确的默认值,因此通常不需要自定义它们。
    标签<comment>将在会话ID cookie中添加Comment特性,在其中可以添加任意文本。这通常用于解释cookie的目的,并告诉用户网站的隐私策略。
    标签<http-only>和<secure>对应着cookie的HttpOnly的Secure特性,它们的默认值都是假
    最后一个标签<max-age>指定了cookie的Max-Age特性,用于控制cookie何时过期。默认情况下,cookie没有过期日期,这意味着它将在浏览器关闭时过期。可以自定义该值,单位为秒(<session-timeout>以分钟为单位)。 

  • 相关阅读:
    Robot Framework自动化测试 ---视频与教程免费分享
    我读《2017软件测试行业调查报告》
    『性能测试』文章大汇总
    作为一个测试,应该怎样分工呢?
    软件测试流程进阶----软件测试总结心得
    JMeter 聚合报告之 90% Line 参数说明
    JMeter使用技巧
    自动化基础普及之selenium的解释
    Robot Framework自动化测试(四)--- 分层思想
    mysql的几种join 及 full join 问题
  • 原文地址:https://www.cnblogs.com/q149072205/p/11972604.html
Copyright © 2011-2022 走看看