一个非常简单的设置。 HTML表单
<form id="ChromeEmailForm" method="POST" action="ChromeEmail.jsp" target="ChromeEmailWindow" >
<input type="hidden" name="emailSubject" value="something" />
<input type="hidden" name="htmlBody" value="something" />
</form>
由JS提交:
document.getElementById('ChromeEmailForm').submit();
并使用以下命令在JSP中检索:
<%=request.getParameter("emailSubject")%>
在Chrome中运行良好,但返回&#34; null&#34;在ChromeEmail.jsp页面的IE(11)中。两个浏览器都返回页面。
尝试添加JSP以强制编码,但没有区别:
<%@ page contentType="text/html; charset=utf-8"%>
<%request.setCharacterEncoding("UTF-8");%>
这是一个已知的IE功能吗?
答案 0 :(得分:0)
原来这个 IS 是一个IE功能,如下所示: Challenge-Response Authentication and Zero-Length Posts
来自文章:
出于性能原因,如果Internet Explorer希望立即收到带有凭据质询的HTTP / 401响应,则它不会立即传输POST正文。如果没有这种优化,IE将被迫多次重新上载(可能很大的)POST主体,浪费带宽。
这解释了为什么POST数据在身份验证站点中丢失。