gpt4 book ai didi

java - 为什么 Internet Explorer 不在请求 header 上发送 jsessionid cookie?

转载 作者:行者123 更新时间:2023-11-28 22:07:26 26 4
gpt4 key购买 nike

我正在 OpenShift 容器上从 Oracle iPlanet Web Server 迁移到 Apache Tomcat。我们的 webapp 是 Apache Struts 2.5,不使用 Spring Framework。问题是:出于某种原因, session 无法正常工作,并且仅在 Internet Explorer 中无法正常工作。在 Mozilla Firefox、Google Chrome 和 Apple Safari 上进行测试,它工作正常,只有 Internet Explorer 会遇到这个问题。

这是我的 web.xml cookie session :

<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<path>/</path>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>

我的 webapp 的 URL 与此类似:

http://app-external-dev-4823.appcloud-np.mycompany.com/APPExternal/

生成的cookie是这样的:

Set-Cookie: JSESSIONID=8A46BC24370545E9885E67D050F25984.Tomcat7-rhel7; Version=1; Path="/"; HttpOnly

我读到 Internet Explorer 使用 _ 的 DNS URL 有问题,但事实并非如此。

比较 Google Chrome 和 Internet Explorer 的响应 header ,我找不到任何奇怪的地方

谷歌浏览器:

Cache-control:private
Content-Language:en-US
Content-Type:text/html;charset=ISO-8859-1
Date:Fri, 18 May 2018 12:08:07 GMT
Server:
Set-Cookie:JSESSIONID=3DC79F0159A3D3324658BD0A644BDE51.Tomcat7-rhel7; Version=1; Path="/"; HttpOnly
Set-Cookie:c4a1aaf48f2245d1880a957d46993e21=8fa84cd57f198140fc034497aab55b2a; path=/; HttpOnly
Set-Cookie:np_cookie=1479619875.20480.0000; path=/
Transfer-Encoding:chunked

互联网浏览器:

Response    HTTP/1.1 200 OK
Set-Cookie JSESSIONID=3EF94406ED000ACD13A77958B424DDEC.Tomcat7-rhel7; Version=1; Path="/"; HttpOnly
Content-Type text/html;charset=ISO-8859-1
Content-Language en-GB
Transfer-Encoding chunked
Date Fri, 18 May 2018 12:06:36 GMT
Server

我真的在这里大发雷霆。我试图更改 cookie 的域、路径、httponly 和安全属性,但没有任何更改。顺便说一下,它在本地 Apache Tomcat 上运行得非常好。

最佳答案

这可能不是问题的答案,但由于评论太长,我在这里发布了我的解决方案。

我们的服务器也是如此。这在本地设置中工作正常,但在生产服务器上存在此问题。在花费大量时间谷歌搜索之后,为了更好和可靠的解决方案,编写了处理客户端和服务器之间交互的新方法。基本思想是创建我们的 cookie 并将该 cookie 发送给客户端。对于每个请求,这将再次发送回服务器。

    HttpSession session = request.getSession();    if (request.getParameter("JSESSIONID") != null) {        Cookie userCookie = new Cookie("JSESSIONID", request.getParameter("JSESSIONID"));        response.addCookie(userCookie);    } else {        String sessionId = session.getId();        Cookie userCookie = new Cookie("JSESSIONID", sessionId);        response.addCookie(userCookie);    }

了解更多信息:Session is lost and created as new in every servlet request

关于java - 为什么 Internet Explorer 不在请求 header 上发送 jsessionid cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50411151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com