Geo*_*old 10 cookies tomcat wicket jsessionid
我注意到,当用户第一次访问我的网站时,Wicket生成的URL包含一个jsessionid,而不是依赖于cookie来获取会话信息.
cookie确实成功设置,如果用户只是重新加载页面,jsessionid则不再附加到URL.你可以在这里测试一下:pixlshare.com.将鼠标悬停在任何图片链接上都会显示带有jsessionid; 重新加载页面,jsessionids将被删除.
根据以前的Wicket SEO页面的经验,我知道如何删除jsessionid它以将其隐藏起来,但是对于普通用户使用这种技术似乎是一种黑客攻击.它也将破坏网站,让那些偏执狂的人足以让cookie被禁用.
这是在最近从Glassfish转移到Tomcat之后发生的,尽管我不能肯定地说这是原因.另外,我在Tomcat面前使用Apache的mod_proxy.
Tom*_*icz 18
这是发生的事情:客户端第一次请求页面,根本不发送任何cookie:
$ curl -v http://pixlshare.com/upload
Run Code Online (Sandbox Code Playgroud)
服务器根据此请求不了解客户端功能,特别是它是否支持cookie.因此,要更加安全,它会发送两个 cookie并JSESSIONID在URL编码:
< Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
...
<a wicket:id="image1Link" href="gallery/OKfzVk;jsessionid=25E7A6C27095CA1F560BCB2983BED17C">
Run Code Online (Sandbox Code Playgroud)
换句话说,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">
Run Code Online (Sandbox Code Playgroud)
另一方面,如果客户端不支持cookie,服务器将继续重写URL.
这不是Wicket问题,这是Tomcat功能.
BTW(来自您的网站JavaScript):
path = path.replace(/^C:\\fakepath\\/i, '');
Run Code Online (Sandbox Code Playgroud)
什么是... ake?
| 归档时间: |
|
| 查看次数: |
6639 次 |
| 最近记录: |