【问题标题】:Tomcat 8 redirecting after HTML form submitHTML表单提交后Tomcat 8重定向
【发布时间】:2016-05-09 15:34:13
【问题描述】:

我的 web 应用程序的管理界面中有一个 HTML 表单。这是一个很大的表格,所以我省略了输入元素,但相关的标签看起来像:

<form id="config" action="updateConfig" method="POST">
    <input type="submit" value="Save configuration" name="submit1"/>
...
...
</form>

这托管在http://servername:port/webapp/admin,单击按钮应将表单提交给http://servername:port/webapp/admin/updateConfig 并刷新页面(即重新加载http://servername:port/webapp/admin

这在所有浏览器组合中都与 Tomcat 7 完美配合。

但是,对于 Tomcat 8,它的行为有所不同。使用 Firefox、Chrome 和 Safari 时,表单提交工作,但浏览器会尝试重定向到 http://servername:port/webapp/admin/updateConfig。它和以前一样在 IE/Edge 上工作

我已搜索 Tomcat 8 文档,但找不到任何可能导致此行为的明显更改。任何帮助将不胜感激。

可以在此处找到错误报告:https://github.com/Reading-eScience-Centre/edal-java/issues/54#issuecomment-212529593,其中提供了有关重定向如何发生的更多详细信息。

【问题讨论】:

  • 你能对正在发生的事情进行协议跟踪并发布吗?你的代码是什么样的?

标签: java html tomcat tomcat7 tomcat8


【解决方案1】:

好的,经过一些实验,我发现了这一点。问题是 webapp 正在发送一个空白重定向:

response.sendRedirect("")

在 Tomcat http://servername:port/webapp/admin(即提交帖子的页面),而在 Tomcat 8 中,它的处理方式不同。从标头看来,Tomcat 7 拦截了重定向并将完整的 URL 显式插入到“Location”标头中,而 Tomcat 8 只是发送了一个空位置,该位置在不同浏览器上的解释不同。

因此,解决方案是将重定向更改为:

response.sendRedirect("./")

适用于 Tomcat 7 和 Tomcat 8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多