Vaadin 会话立即过期
Vaadin session expired immediately
我有一个从原型创建的简单 vaadin 应用程序。带有按钮的页面已加载,但当您单击它时,会话已过期。在条件下仅出现此问题:
- 会话是 https
- 浏览器是 IE 11.0.14393.0(在 Windows 10 周年更新 1607 之后)
- 使用了 SPNEGO
服务器是 WildFly 10.1。0.Final
其他浏览器(EDGE、Firefox、Chrome)工作正常。在 Aniversary 更新之前,IE 11 也能正常工作。
我知道信息不够,但我不知道什么是重要的。你能告诉我我应该检查什么/我应该做什么吗?
我在日志和通信方面没有发现任何奇怪的地方。我猜会话会有问题,但我找不到问题所在 :-(
问题是由内部生成的网站图标请求引起的。此请求由 IE 内部生成并使用了错误的会话 ID (jsessionID)。服务器创建一个新会话并使用其 ID 进行应答。不幸的是,IE 然后将这个新的会话 ID 用于其他请求。其他浏览器(和以前的 IE 版本)正确使用原始 jsessionID 而不是作为对内部生成的 favicon 请求的响应而返回的那个。
解决方案:我更改了应用程序中的网站图标链接,并将它们指向安全服务器区域之外。
@Override
public void modifyBootstrapPage(BootstrapPageResponse response) {
// FIX for IE11 at Windows 10 after anniversary update
response.getDocument().head().getElementsByAttributeValue("rel", "shortcut icon").attr("href", "/static/favicon.ico");
response.getDocument().head().getElementsByAttributeValue("rel", "icon").attr("href", "/static/favicon.ico");
}
我有一个从原型创建的简单 vaadin 应用程序。带有按钮的页面已加载,但当您单击它时,会话已过期。在条件下仅出现此问题:
- 会话是 https
- 浏览器是 IE 11.0.14393.0(在 Windows 10 周年更新 1607 之后)
- 使用了 SPNEGO
服务器是 WildFly 10.1。0.Final
其他浏览器(EDGE、Firefox、Chrome)工作正常。在 Aniversary 更新之前,IE 11 也能正常工作。
我知道信息不够,但我不知道什么是重要的。你能告诉我我应该检查什么/我应该做什么吗?
我在日志和通信方面没有发现任何奇怪的地方。我猜会话会有问题,但我找不到问题所在 :-(
问题是由内部生成的网站图标请求引起的。此请求由 IE 内部生成并使用了错误的会话 ID (jsessionID)。服务器创建一个新会话并使用其 ID 进行应答。不幸的是,IE 然后将这个新的会话 ID 用于其他请求。其他浏览器(和以前的 IE 版本)正确使用原始 jsessionID 而不是作为对内部生成的 favicon 请求的响应而返回的那个。
解决方案:我更改了应用程序中的网站图标链接,并将它们指向安全服务器区域之外。
@Override
public void modifyBootstrapPage(BootstrapPageResponse response) {
// FIX for IE11 at Windows 10 after anniversary update
response.getDocument().head().getElementsByAttributeValue("rel", "shortcut icon").attr("href", "/static/favicon.ico");
response.getDocument().head().getElementsByAttributeValue("rel", "icon").attr("href", "/static/favicon.ico");
}