gpt4 book ai didi

java - 在 Safari 中, session 不会在后续的 POST 和 GET 之间保持

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

我有一个应用程序在 Tomcat 7.0.27 上运行,这是我们的组织网络,第二个应用程序在 Amazon Web 服务上运行(不过是 Tomcat 7.0.42)。在亚马逊上运行的应用程序位于第一个应用程序的 iframe 内。在 Amazon 上运行的应用程序是自包含的,即它需要的所有文件都驻留在同一个 tomcat 容器中,并且不与第一个应用程序通信。我看到整个站点在 FireFox 和 chrome 中运行良好。但是在 Safari 中遇到问题。在 Safari 中,第二个应用程序的启动是成功的(这只不过是一个 POST),但随后的请求(这是 GET)失败了。所以在代码中我们正在做的是在 POST 之后我们像这样在 session 中放置一个 Java 对象

SessionData result = new SessionData(request,oauthCredentials);
request.getSession().setAttribute(SESSION_ATTR_TC_DATA, result);

所以在 POST 之后,第一个请求是 GET,当这个请求进来时,我们尝试获取我们放入 session 中的 Java 对象,如下所示。

SessionData result = (SessionData) request.getSession().getAttribute(SESSION_ATTR_TC_DATA);
request.setAttribute(SESSION_ATTR_TC_DATA, result);

但在 Safari 中,我看到 POST 中的 session ID(JSESSIONID) 与 GET 中的不同,所以 SessionData=null; 我看到 session ID在 FIREFOX/CHROME 的情况下是相同的。

我从 URL/IPAddress 中看到了

http://one.roses.flowers.org/ #IpAddress=141.21.19.87
http://test-dev.elasticbeanstalk.com/ #IpAddress=64.261.831.97

我不会通过编写代码来创建任何 session 。 Tomcat 正在处理它。

但是,当第一个 tomcat/第二个 tomcat 在我们的组织网络中运行时,这整个过程适用于所有浏览器。我从 URL/IPAddress 中看到了

http://one.roses.flowers.org/ #IpAddress=141.21.19.87
http://five.oranges.flowers.org/ #IpAddress=141.21.19.88

在这种情况下,为什么 Safari 会无动于衷?

最佳答案

它在 Safari 中工作的原因是关闭 cookie 限制以接受第三方。 IE也是一样。默认设置是不接受第三方cookie的。对于 FF/Chrome,默认选项是接受第 3 方 cookie。

我用过Webscarab调试此问题的工具。

iframe 内的应用程序位于 AmazonWebservices 上,URL 模式与原始站点完全不同。这样浏览器就会认为这些调用是从/向某个外部站点发出的。因此,基于浏览器 cookie 设置,浏览器切断了 iframe 内的应用程序。

此外,2 URL 在浏览器中看起来是这样的。

http://one.roses.flowers.org/ 
http://test-dev.elasticbeanstalk.com/

我们在较高环境 (QA/PROD) 中的 AmazonWebservice(AWS) 服务器上的项目中添加了别名/cname,如下所示。通过向 url 浏览器添加别名,不要考虑来自第三方的 URL,因为它们具有相同的域名。现在该解决方案独立于浏览器 cookie 设置。

http://test-dev.elasticbeanstalk.com/ ---> http://aws.newsite.flowers.org

关于java - 在 Safari 中, session 不会在后续的 POST 和 GET 之间保持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100364/

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