返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/157814.html(转载时请注明来源链接)

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

猜你喜欢
  • Springboot如何去掉URL后面的jsessionid
    目录如何去掉URL后面的jsessionidurl中有Jsessionid生成的原因解决方式一解决方式二Java关于jsessionid和URL对SEO的冲击安全问题解决之道如何去掉...
    99+
    2024-04-02
  • 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 后缀
  • ci url如何去掉index.php
    小编给大家分享一下ci url如何去掉index.php,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ci url去掉index.php的方法:首先修改配置文件;...
    99+
    2023-06-15
  • thinkphp如何去掉url index
    这篇文章主要介绍“thinkphp如何去掉url index”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp如何去掉url index”文章能帮助大家解决问题。thinkphp去掉ur...
    99+
    2023-07-04
  • php怎么去掉url里的.php后缀
    本篇内容主要讲解“php怎么去掉url里的.php后缀”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么去掉url里的.php后缀”吧!php去掉url里的.php后缀的方法:1、找到并打...
    99+
    2023-06-25
  • 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
  • php如何去掉后两位数
    这篇“php如何去掉后两位数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何去掉后两位数”文章吧。在PHP中,可以利...
    99+
    2023-06-29
  • vue项目如何去掉URL中#符号的方法
    目录前言正常解决步骤1. 设置路由mode2. 配置服务端nginx可能碰到的问题1. 静态资源Uncaught SyntaxError: Unexpected token <...
    99+
    2024-04-02
  • 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
  • php如何去掉字符串后缀
    在php中使用rtrim()函数删除字符串的后缀,具体方法如下:rtrim()函数作用:php中rtrim()函数的作用是用于移除字符串右侧的空白字符或其他预定义字符。rtrim()函数语法:rtri...
    99+
    2024-04-02
  • php如何去掉最后一个字
    今天小编给大家分享一下php如何去掉最后一个字的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,我们可以通过PHP的内置函...
    99+
    2023-07-05
  • 如何去掉xp登陆界面
    这篇文章给大家分享的是有关如何去掉xp登陆界面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。去掉XP开机登陆画面方法:运行“regedit”,以打开“注册表管理器”;运行注册表编辑器,依次展开[HKEY_LOCA...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作