Edge/IE下载Servlet而不是显示它



我有一个这样的表单:

<form action="WorkUser" method="POST" >
    <label>
        <input type="text" id="nickname" name="nickname" placeholder="Nickname">
        <input type="submit" name="submit" value="Senden">
    </label>
</form>

这将重定向到Servlet,Servlet将请求转发到jsp文件。在Opera、Chrome、Safari和Firefox上,这非常有效。

但是InternetExplorer和Edge将最终的jsp页面下载为html文件。当你用浏览器打开它时,页面会呈现得很棒。此外,在中验证时,该页面没有显示错误http://validator.w3.org

重定向到的jsp文件的头部如下所示:

<!DOCTYPE html>
    <%@ page language="java" contentType="charset=UTF-8"
pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

你知道为什么会出现这个问题吗?

此处的contentType不正确。

<%@page language="java" contentType="charset=UTF-8" pageEncoding="UTF-8"%>

它一定是其中一个价值观。默认值为text/html,这是HTML文档的正确值。

<%@page language="java" pageEncoding="UTF-8" %>

当网络浏览器无法识别内容类型时,出于安全原因,一些浏览器可能会被迫将其视为文件下载,而其他浏览器可能会首先尝试检查响应是否"看起来像"HTML,然后无论如何都会显示它。


与具体问题无关language="java"是超复杂的。这已经是默认值了。

<%@page pageEncoding="UTF-8" %>

pageEncoding可以根据以下问题的答案中的说明在应用程序范围内设置:如何干净地设置所有JSP的pageEncoding?

这样就可以去掉整个<%@ page ... %>行。

最新更新