gpt4 book ai didi

java - request.getHeader 在 jsp 页面中返回空值

转载 作者:行者123 更新时间:2023-11-29 05:50:31 27 4
gpt4 key购买 nike

我编写了一个过滤器来向 Response 对象添加一些 header 值。

doFilter 正在设置一些 header 值,如下所示

public void doFilter(final ServletRequest req, final ServletResponse res, final FilterChain filterChain)
throws IOException, ServletException
{

final HttpServletResponse response = (HttpServletResponse) res;
final HttpServletRequest request = (HttpServletRequest) req;

response.setHeader("X-FRAME-OPTIONS", "SAMEORIGIN");

filterChain.doFilter(req, res);

}

过滤器映射是"/*"

我有 index.jsp 页面作为欢迎页面,这是我的应用程序中唯一的页面。我正在尝试读取上述方法中设置的 header 值。

我的index.jsp是

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hello world</title>
</head>
<body>

<%
out.println("<br/><br/>XFRAME"+request.getHeader("X-FRAME-OPTIONS"));
%>
<br/>
</body>
</html>

我在页面中得到 Null 输出。如果该值设置为“SAMEORIGIN”,我无法获得空值。

XFRAMEnull 

谁能帮忙解决这个问题。

最佳答案

这很简单,您已经在 HttpServletResponse header 中添加了一个属性,并希望从 HttpServletRequest header 中读取它。那样不行。

您需要了解的是 HTTP 协议(protocol)。 HttpServletRequest 是从客户端到服务器的请求,而 HttpServletResponse 是来自服务器并转换回客户端消息的数据和流的响应(由浏览器)。

来自请求/响应的每个 header 都包含服务器了解其接收到的内容、如何转换接收到的数据以及返回什么响应所必需的信息。因此,为什么 HttpServletRequest.getHeaders() 几乎永远不会与 HttpServletResponse.getHeaders() 相同,因为每个请求/响应都符合 HTTP 请求/响应协议(protocol)。

此外,您永远不能期望填充响应并神奇地出现在请求中。

希望对您有所帮助。

关于java - request.getHeader 在 jsp 页面中返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14052217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com