1

为了调试,我编写了一个非常简单的 Web 应用程序,它只包含一个简单的 JSP 页面和一个包含文本字段和提交按钮的小表单。

Tomcat 配置为使用此页面上的 Waffle 过滤器。我知道将表单发送到同一页面,但在过滤器未涵盖的另一个 URL 下。Post 参数现在完全丢失,但传输了一个 ntml 令牌。

所以总结一下:

  • 我去http://myserver/autologin/test.jsp(通过华夫饼过滤器)
  • 在该页面上,我有一个指向 (http://myserver/content/test.jsp) 的表单,该表单是同一页面,但在另一个 URL(别名)下引用。
  • 所有 POST 参数都在第二个请求中丢失

我正在使用来自 waffle.codeplex.com 和 IE8 的 Waffle。

编辑:如果我使用其他 NTLM 过滤器,也会发生这种情况。所以问题不在于这里的 Waffle,而是 Internet Explorer 每次发出 POST 请求时都会强制重新验证 NTLM 会话。

以前有人遇到过这个问题吗?

4

2 回答 2

1

我对 IE8 和 Windows7 有同样的问题

以下解决方案仅适用于 WindowsXP 上的 IE7:

http://billcomer.blogspot.com/2009/01/ntlm-authentication-and-ie-post-problem.html

编辑: 好的,我忘记将我的服务器添加到我的本地 Itranet 区域:IE -> Internet 选项 -> 安全 -> 选择“区域设置 Intranet”,然后单击站点 -> 高级 -> 现在添加您的服务器

http://www.nateirwin.net/2007/01/19/enabling-ntlm-authentication-in-firefox-and-internet-explorer/

现在它也适用于 Windows7 上的 IE8

于 2011-08-02T17:16:17.377 回答
0

在我的示例中,url http://myserver/autologin/test.jsp是通过过滤器发送的,因此 waffle 已正确验证并登陆页面。当我随后发布表单时,新请求没有通过 waffle,导致 IE 强制通过 NTLM 进行重新身份验证。由于Waffle不再参与通信,重认证失败,post参数丢失。

因此,快速的解决方案是更改 waffle 的 url 模式,使其匹配应用程序中的所有站点。即 /* 而不是 /autologin。

于 2011-08-03T07:57:52.250 回答