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 ... %>
行。
我有这样的表格:
<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 ... %>
行。