启用 cookie 后,为什么 jsessionid 出现在 Wicket URL 中?

2023-11-23

我注意到,当用户第一次访问我的网站时,Wicket 生成的 URL 包含jsessionid,而不是依赖 cookie 来获取会话信息。

cookie 确实设置成功,如果用户只是重新加载页面,jsessionid不再附加到 URL 中。你可以在这里测试一下:像素分享网。将鼠标悬停在任何图像链接上都会显示带有jsessionid;重新加载页面,然后jsessionids将被删除。

从之前的经验来看检票口 SEO 页面我知道如何删除jsessionid向机器人隐藏它,但对普通用户使用这种技术似乎是一种黑客行为。对于那些偏执到禁用 cookie 的人来说,它也会破坏网站。

这是最近从 Glassfish 迁移到 Tomcat 后发生的,尽管我不能肯定地说这就是原因。另外,我在 Tomcat 前面使用 Apache 的 mod_proxy。


发生的情况如下:客户端第一次请求页面,根本不发送 cookie:

$ curl -v http://pixlshare.com/upload

服务器不知道基于此请求的客户端功能的任何信息,特别是它是否支持 cookie。因此,为了更加安全,它发送both饼干和JSESSIONID在 URL 中编码:

< Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
...
<a wicket:id="image1Link" href="gallery/OKfzVk;jsessionid=25E7A6C27095CA1F560BCB2983BED17C">

换句话说,servlet 容器防御性地追加JSESSIONID到每个 URL,以防客户端不支持 cookie。

那么为什么JSESSIONID第二次请求时消失?因为现在客户端在 HTTP 请求中发送 cookie,并且服务器知道客户端会处理它们。话虽如此,JSESSIONID不再需要。

$ curl -v -b JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C http://pixlshare.com/upload
> Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C
...
<a wicket:id="image1Link" href="gallery/OKfzVk">

另一方面,如果客户端不支持cookie,服务器将继续重写URL。

这不是 Wicket 问题,而是 Tomcat 功能。


顺便说一句(来自您网站的 JavaScript):

path = path.replace(/^C:\\fakepath\\/i, '');

什么假的...?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

启用 cookie 后,为什么 jsessionid 出现在 Wicket URL 中? 的相关文章

  • 如何从 Grails 应用程序的 URL 中删除应用程序名称?

    我有一个应用程序在这样的 URL 上运行 http myapp mydomain com myapp http myapp mydomain com myapp 我不想要 myappURL 中的部分 那么如何去掉应用程序名称呢 我只想 ht
  • iframe 不读取 Chrome 中的 cookie

    Chrome 不允许子 iframe 读取自己的 cookie 我有一个带有子 iframe 的父网页 家长在https first site com 孩子在 父级内部 cookie set with 小路 安全 真实 仅http 假 域名
  • Cookie 不会重置

    好吧 我被难住了 我已经盯着这个看了好几个小时了 我使用以下代码在 access login php 设置 cookie setcookie username username time 604800 当我尝试注销 位于 access lo
  • Postman - 所需的 MultipartFile 参数不存在 - Spring,Java [重复]

    这个问题在这里已经有答案了 Edit 这个问题不同于 jQuery Ajax 文件上传 所需的 MultipartFile 参数 文件 不存在 https stackoverflow com q 29488852 2279082不同之处在于
  • Tomcat 8 上的 PHP

    我找到了很多如何让 PHP 在 Tomcat 上运行的指南 但都是以前的版本 我尝试了所有这些 但我所能显示的只是一个空白页面 并且代码仍然没有被触发 我知道 Tomcat 是为 Java 应用程序而不是 PHP 构建的 但我需要找到一种使
  • 在 Java 构建过程中更改常量的最佳方法

    我继承了一个在 Tomcat 下运行的 Java 应用程序 servlet 由于历史原因 根据应用程序的部署位置 本质上是品牌问题 代码具有不同的 外观和感觉 选项 有几个常量控制这个品牌过程 它们具有不同的功能 不应压缩为单个常量 即 B
  • 具有多个数据源的 Tomcat 6/7 JNDI

    当有多个时
  • 为什么 Chrome 审核建议我最小化 Cookie 大小?

    如何最小化请求的 cookie 大小 Chrome 似乎 警告我 我的 cookie 大小为 41B 这根本不是很多 但是它警告我有什么原因吗 这是一个 PHPSESSID cookie 我真的不知道如何最小化它 有任何想法吗 我的请求响应
  • tomcat 7 + ssl 不工作 - ERR_SSL_VERSION_OR_CIPHER_MISMATCH

    Ubuntu 14 tomcat 7 java 7 our crt our key 和 gd bundle g2 g1 crt 由 godaddy 提供 该捆绑包中有 3 个证书 通过查看文件可以看出 请注意 我们的密钥和 crt 在 no
  • Tomcat 托管具有多个 SSL 证书的多个虚拟主机

    例如 我有一台使用 Tomcat 7 托管多个网站的服务器 a abc com b abc com c def com d def com 使用tomcat的虚拟主机功能 因此它们各自可能属于不同的webapps文件夹 我们现在正在尝试为每
  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • tomcat在Spring Boot中不创建访问日志

    我按照中的说明进行操作this https stackoverflow com a 35001421 18573回答和弹簧靴 https docs spring io spring boot docs current reference h
  • 使用 chrome 扩展和 Django 进行身份验证

    对于那些熟悉 django 和 chrome 扩展的人 如何使用 cookie 进行身份验证 以便当您登录 django 制作的网站时 您的 chrome 扩展程序也会登录并激活 谢谢 您的 Chrome 扩展程序 通过 Javascrip
  • Tomcat:具有强密码的 TLSv1.2 不起作用

    我安装了Tomcat 7 配置了对 TLSv1 2 的支持在端口 8443 上 我的连接器配置 协议 org apache coyote http11 Http11NioProtocol SSLEnabled true 方案 https 安
  • 在 Tomcat 上部署 Java Web 项目,无需 WAR 或 EAR

    我有一个 Java Web 项目 Struts Spring 在我的本地主机上完美运行 我必须将其部署在我的网站上 但虚拟主机提供的 Tomcat Manager 界面显示 由于安全原因 它无法上传 WAR 文件 当联系技术支持时 我被告知
  • 如何在之前的 Facebook 身份验证后自动安全地让用户登录?

    用户抱怨他们必须过于频繁地登录 如果身份验证完全基于 Facebook OAuth 那么用户如何在下次访问该页面时自动登录 用户流程示例 用户点击 使用 Facebook 登录 用户通过 Facebook 进行身份验证并被重定向回网站 用户
  • 当用户再次访问同一页面时保持登录状态?

    目前我正在使用会话来登录用户 但是当我关闭浏览器并再次打开它时 我必须再次登录 你如何让用户在 2 周内保持登录状态 那么是通过cookie吗 那么您想要 在这台计算机上记住我 选项吗 这是一种与语言无关的方法 创建一个至少包含以下内容的数
  • org.apache.derby.jdbc.ClientDriver 在哪里?

    我下载了jar包核心 Apache Derby 数据库引擎 还包括嵌入式 JDBC 驱动程序 10 9 1 0 http mvnrepository com artifact org apache derby derby 但那个罐子不包括
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 将 OAuth WRAP 访问令牌直接保存在客户端计算机上的 cookie 中吗?

    我计划建立一个可以访问 oauth 包装框架的网站 我正在考虑将访问令牌按原样存储在客户端计算机上 我不想在服务器上维护临时令牌等数据库 我应该做吗 或者我应该加密它 首先 为什么他们不使用 OAuth 2 0 您可以将 OAuth 凭据存

随机推荐

  • 为什么 pandas.DataFrame.apply 打印出垃圾?

    考虑这个简单的数据框 a b 0 1 2 1 2 3 我执行一个 apply像这样 In 4 df apply lambda x x values Out 4 a 140279910807944 140279910807920 b 1402
  • .htaccess RewriteRule 保留 GET URL 参数

    我在保持 URL 参数正常工作时遇到问题 htaccess网址重写 My htaccess重写如下 RewriteEngine on RewriteRule a z 2 2 a zA Z0 9 index php lang 1 page 2
  • 尝试运行 Node.js 应用程序时如何修复“语法错误:无效或意外的令牌”

    我已经安装了Node js来自官方网站 下列的这些微软文档我尝试通过以下步骤创建我的第一个 Node js 应用程序 打开 PowerShell 并创建一个新目录 mkdir NodeApp 然后进入目录 cd NodeApp 在 VS C
  • 块的时间?

    有没有办法报告计算每个块需要多少时间 我正在努力从一些大型脚本创建一个文档 很高兴知道时间花在哪里 我确实使用了缓存功能 所以当然 一旦对象被缓存 处理文档就不会太慢 但我想隔离慢速块 看看如何阻止它们被重新计算 除非绝对需要 一种想法是
  • Android PCM 字节

    我正在使用 AudioRecord 类来分析麦克风中的原始 pcm 字节 所以这工作得很好 现在我需要将 pcm 字节转换为分贝 我有一个公式 可以将 Pa 中的声压转换为 db 分贝 20 log10 Pa 参考 Pa 所以问题是我从缓冲
  • 将 java 代码翻译成 kotlin 的最佳方法

    URL url new URL urlSpec HttpURLConnection connection HttpURLConnection url openConnection InputStream in connection getI
  • Java - 运行一个线程两次[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 来自另一个帖子 如果一个线程需要运行多次 那么应该创建一个 Thread 的新实例并对其调用 start 这是怎么做到的 我会使用另一层抽象 使用ExecutorService 这是
  • C++ 中 C 库的范围 -

    C 编程语言 特别版 第 431 页指出 For every header lt X h gt defining part of the C standard library in the global namespace and also
  • 计算字符串出现次数并绘制直方图

    是否有任何直接的方法可以从像下面这样的元胞数组创建直方图 连续条之间的间距应该完全相同 x 轴的标签应该是垂直方向下面的变量的相应名称 w464 w462 w461 w464 w461 w463 w466 w461 我也想知道更好的方法 F
  • 主题和行为主题有什么区别?

    我不清楚 a 之间的区别Subject and a BehaviorSubject 难道只是一个BehaviorSubject有getValue 功能 行为主体持有一个值 当它被订阅时 它会立即发出该值 主题不具有值 主题示例 使用 RxJ
  • 在 Windows 上使用 mkbundle 创建 C# 可执行文件

    我正在尝试从控制台应用程序创建可执行文件 我已经安装了 mono cygwin mingw gcc mingw zlib1 mingw zlib devel pkg config 并将以下几行添加到我的 bashrc 文件中 export
  • 使用CSS和Javascript的无限旋转动画[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我浏览了一些单页网站示例并发现了这一点 http alwayscreative net 我对背景中无限旋转的圆盘感到非常惊讶 我看过一些例子 但没有一个是这样工作的 谁能告诉我这
  • 如何停止核心动画?

    我现在正在使用核心动画为按钮设置动画 在某种情况下我想停止该动画 如何停止动画 这是为按钮设置动画的方法 void animateButton UIButton btnName CABasicAnimation pulseAnimation
  • 为什么 C++ 允许未命名函数参数?

    以下是完全合法的C code void foo int cout lt lt Yo lt lt endl int main int argc char const argv foo 5 return 0 我想知道 考虑到无法从函数内部引用它
  • “可序列化”类中的字段应该是瞬态的或可序列化的

    您好 我在声纳 lint 中收到此错误 可序列化 类中的字段应该是瞬态的或 可序列化为 私有最终条件 notEmpty lock newCondition 私有最终条件 notFull lock newCondition 私有Compara
  • 上渲染 MathJax 输出

    我搜索过这个主题 但无法找到直接答案 而且我也不擅长 javascript 所以我希望有人能告诉我如何做到这一点 我只是喜欢在canvas2D 中显示数学 我用context fillText将字符串传递给canvas2d 但该字符串显然没
  • 以编程方式在 Windows 中创建快捷方式

    有没有办法在 Windows 中创建链接 我找到了使用的示例VBScript或者必须下载Shortcut exe 我需要一个简单的解决方案 那可能吗 我遇到了同样的问题 所以我编写了用于解析和创建 lnk 文件的库 它不使用 VBScrip
  • Python - 使用 matplotlib 组织 3 个子图

    我尝试为我的图生成 3 个子图 这似乎可行 但并不完全一致 如何使底部的图形和下面的图形之间的宽度相同 plt close fig plt figure ax1 plt subplot 211 ax1 plot cycles np asar
  • npm install 错误:rollbackFailedOptional

    当我尝试时npm install新软件包它向我显示此错误 rollbackFailed可选 动词 npm session 585aaecfe5f9a82 node version 8 4 0 npm version 5 3 0 first
  • 启用 cookie 后,为什么 jsessionid 出现在 Wicket URL 中?

    我注意到 当用户第一次访问我的网站时 Wicket 生成的 URL 包含jsessionid 而不是依赖 cookie 来获取会话信息 cookie 确实设置成功 如果用户只是重新加载页面 jsessionid不再附加到 URL 中 你可以