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

Edge/IE downloads Servlet instead of showing it

我有这样的表格:

<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,它将请求转发到一个 jsp 文件。在 Opera、Chrome、Safari 和 Firefox 上效果很好。

但是 Internet Explorer 和 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"%>

必须是those values之一。默认值为 text/html,这是 HTML 文档的正确值。

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

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


与具体问题无关language="java"多余。已经是默认了

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

pageEncoding 可以按照这个问题的答案中的说明在整个应用程序范围内设置:How can I cleanly set the pageEncoding of all my JSPs?

这样你就可以摆脱整个 <%@ page ... %> 行。