广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Springboot如何去掉URL后面的jsessionid
  • 385
分享到

Springboot如何去掉URL后面的jsessionid

2024-04-02 19:04:59 385人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录如何去掉URL后面的jsessionidurl中有Jsessionid生成的原因解决方式一解决方式二Java关于jsessionid和URL对SEO的冲击安全问题解决之道如何去掉

如何去掉URL后面的jsessionid

url中有Jsessionid生成的原因

jsessionid是标明session的id,它存在于cookie中,一般情况不会出现在url中,服务器会从客户端的cookie中取出来,但是如果客户端禁用了cookie的话,就要重写url了,显式的将jsessionid重写到Url中,方便服务器来通过这个找到session的id。

如果客户端请求的cookie中不包含JSESSIONID,服务端调用request.getSession()时就会生成并传递给客户端,此次响应头会包含设置cookie的信息

如果客户端请求的cookie中包含JSESSIONID,服务端调用request.getSession()时就会根据JSESSIONID进行查找对象,如果能查到就返回,否则就跟没传递JSESSIONID一样;

解决方式一

SpringBoot2.0之前版本

在 .yml配置文件中做如下配置

解决方式二

在启动类中继承springBootServletInitializer,然后重写这个方法 (此方法在springBoot2.0之前版本没有起作用,暂时做记录)


public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
 
        // This will set to use COOKIE only
        servletContext.setSessionTrackingModes(
                Collections.singleton(SessionTrackingMode.COOKIE)
        );
        // This will prevent any JS on the page from accessing the
        // cookie - it will only be used/accessed by the Http transport
        // mechanism in use
        SessionCookieConfig sessionCookieConfig =
                servletContext.getSessionCookieConfig();
        sessionCookieConfig.setHttpOnly(true);
    }

Java关于jsessionid和URL

在写JSP程序时,经常发现url中有一个jsessionid参数,在刷新之后就消失了。一些人认为这是个一个BUG。

这不是一个bug。当一个新的session被创建时,server并不确定客户端是否支持cookies,所以它生成了一个cookie,就是URL中jsessionid的值。当客户端在第二次带着cookie返回时,服务器就知道jsessionid不是必须的,所以就会删掉它。如果客户端没有带着cookie返回,服务器就会继续在url中添加jsessionid参数。

但是现在几乎很难想象浏览器会不支持cookie。jsessionid参数也可能会给SEO和安全带来一定问题。

对SEO的冲击

有些搜索引擎可能会惩罚(找不到更好的词形容)那些具有多个不同url但内容相同的网站。因为sessionid是唯一的,所以多个搜索机器人将返回相同的内容但url不同。

这是一个严重的问题。我们试一下用Google搜索inurl:;jsessionid,Google的搜索结果:About 211,000,000 results (0.25 seconds)

安全问题

在url中包含sessionId不是一个明智之举,这将为攻击者提供便利。

解决之道

不幸的是Servlet Specification和Servlet Containers中并未提供一个标准的方法去禁止在url中带jsessionid。

不过我们可以通过servlet filter去解决这个问题。


package com.lgete.WEB.filter;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
 

public class URLSessionFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        if (!(request instanceof httpservletRequest)) {
            chain.doFilter(request, response);
            return;
        }
 
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(
                httpResponse) { 
            public String encodeRedirectUrl(String url) {
                return url; 
            }
 
            public String encodeRedirectURL(String url) { 
                return url; 
            }
 
            public String encodeUrl(String url) { 
                return url; 
            }
 
            public String encodeURL(String url) { 
                return url; 
            } 
        }; 
        chain.doFilter(request, wrappedResponse); 
    }
 
    public void init(FilterConfig filterConfig) { 
    } 
    public void destroy() { 
    } 
}

在web.xml中添加以下内容:


<filter>     
    <filter-name>URLSessionFilter</filter-name>
    <filter-class>zj.web.filter.URLSessionFilter</filter-class>
</filter>
 
<filter-mapping>
    <filter-name>URLSessionFilter</filter-name>    
    <url-pattern>/*</url-pattern>
</filter-mapping>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Springboot如何去掉URL后面的jsessionid

本文链接: https://www.lsjlt.com/news/157814.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot如何去掉URL后面的jsessionid
    目录如何去掉URL后面的jsessionidurl中有Jsessionid生成的原因解决方式一解决方式二Java关于jsessionid和URL对SEO的冲击安全问题解决之道如何去掉...
    99+
    2022-11-12
  • Springboot怎么去掉URL后面的jsessionid
    这篇文章主要介绍“Springboot怎么去掉URL后面的jsessionid”,在日常操作中,相信很多人在Springboot怎么去掉URL后面的jsessionid问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-25
  • php如何去掉url里的.php后缀
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑PHP怎么去掉url里的.php后缀?比如这样一个链接http://example.com/xxx.php如何把它变成http://example.com/xxx并在浏览...
    99+
    2016-02-09
    php 后缀
  • php如何将数值后面的零去掉
    本篇内容主要讲解“php如何将数值后面的零去掉”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何将数值后面的零去掉”吧!两种去除方法:1、使用rtrim()函数,语法“rtri&...
    99+
    2023-06-30
  • php如何去掉后面几个字符串
    这篇“php如何去掉后面几个字符串”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何去掉后面几个字符串”文章吧。在PH...
    99+
    2023-07-06
  • php如何去掉某个字符后面的内容
    这篇文章主要介绍“php如何去掉某个字符后面的内容”,在日常操作中,相信很多人在php如何去掉某个字符后面的内容问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何去掉某个字符后面的内容”的疑惑有所帮助!...
    99+
    2023-06-30
  • Java如何去掉小数点后面无效0
    今天小编给大家分享一下Java如何去掉小数点后面无效0的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一:需求当小数位很多的时...
    99+
    2023-07-02
  • linux一窜数字后面的逗号该如何去掉
    今天就跟大家聊聊有关linux一窜数字后面的逗号该如何去掉,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在Linux系统中可以使用工具和代码两种方法将系统中的信息就行格式化,下面和大...
    99+
    2023-06-28
  • php如何去掉前后的逗号
    今天小编给大家分享一下php如何去掉前后的逗号的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。去掉前后逗号的方法:1、用tri...
    99+
    2023-06-30
  • vue项目如何去掉URL中#符号的方法
    目录前言正常解决步骤1. 设置路由mode2. 配置服务端nginx可能碰到的问题1. 静态资源Uncaught SyntaxError: Unexpected token <...
    99+
    2022-09-27
  • Vue如何用Router去掉url中默认的锚点
    这篇文章主要介绍“Vue如何用Router去掉url中默认的锚点”,在日常操作中,相信很多人在Vue如何用Router去掉url中默认的锚点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue如何用Route...
    99+
    2023-07-04
  • 织梦dede如何去掉后台登陆界面广告
    每天维护网站都得登陆后台,可是登陆后台看到的是很多广告,非常眼花看多了烦了,刚开始我都不管他,可是最近我又做了个织梦程序建的网站,这次不行了必须得去掉这些广告,于是我找了很多教程最后去掉了,下面我给大家分享下我的解决办法:看看织梦登陆界面广...
    99+
    2017-09-23
    织梦
  • php如何去掉前面的字符
    这篇文章主要讲解了“php如何去掉前面的字符”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何去掉前面的字符”吧!方法一:使用substr()函数PHP中的subst ...
    99+
    2023-07-05
  • vue中如何去掉input前后的空格
    目录vue去掉input前后的空格写一个去除input框空格的vue指令使用方法源码总结vue去掉input前后的空格 场景:在开发过程中,遇到表单填写,用户可以自由输入 截图举例:...
    99+
    2023-03-06
    vue去掉input空格 vue input vue input 空格
  • php如何去掉小数点后的内容
    这篇文章主要介绍了php如何去掉小数点后的内容的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何去掉小数点后的内容文章都会有所收获,下面我们一起来看看吧。一:使用number_format函数number...
    99+
    2023-07-05
  • vue.js路由mode配置之如何去掉url上默认的#
    这篇文章将为大家详细讲解有关vue.js路由mode配置之如何去掉url上默认的#,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。比如 : http://localhost...
    99+
    2022-10-19
  • jquery如何去掉字符串前后的空格
    这篇文章主要介绍“jquery如何去掉字符串前后的空格”,在日常操作中,相信很多人在jquery如何去掉字符串前后的空格问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jque...
    99+
    2022-10-19
  • php中如何去掉数字前面的0
    这篇文章给大家分享的是有关php中如何去掉数字前面的0的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php去掉数字前面的0的方法:1、通过“str_replace ("0", "&q...
    99+
    2023-06-15
  • 如何去掉windows7桌面图标的蓝底
    桌面图标有阴影怎么去掉"“桌面图标有阴影怎么去掉”经常被一些新手问这样的一个问题,有时候明明是同个问题,却要被同个人问上好几次,感觉确实挺无奈。人总是有好奇心的,新手童鞋们在使用计算机的...
    99+
    2023-05-26
    windows7 桌面 图标 蓝底 桌面图标
  • php如何去掉数字前面的字符
    这篇“php如何去掉数字前面的字符”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何去掉数字前面的字符”文章吧。一、问...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作