1

Response オブジェクトにいくつかのヘッダー値を追加するフィルターを作成しました。

doFilter は、以下に示すようにヘッダー値を設定しています

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 ページがあり、これがアプリケーション内の唯一のページです。上記のメソッドで設定されたヘッダー値を読み取ろうとしています。

私の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」に設定されている場合、null 値を取得する方法を取得できませんでした。

XFRAMEnull 

誰でもこれについて助けることができます。

4

1 に答える 1

3

それは簡単です。ヘッダーに属性を追加し、HttpServletResponseヘッダーからそれを読み取ることを期待していますHttpServletRequest。それはそのようには機能しません。

理解する必要があるのは、HTTP プロトコルです。はHttpServletRequestクライアント側からサーバーに送信されるリクエストであり、HttpServletResponseはサーバーから送信されるデータとストリームの応答であり、(ブラウザーによってレンダリングされた) クライアント メッセージに変換されます。

要求/応答の各ヘッダーには、サーバーが受信したもの、受信したデータを変換する方法、および返す応答を知るために必要な情報が含まれています。したがって、要求/応答のそれぞれが HTTP 要求/応答プロトコルに準拠しているため、HttpServletRequest.getHeaders()がほぼ同じになることはありません。HttpServletResponse.getHeaders()

また、応答に値が入力され、魔法のように要求に表示されることは決して期待できません。

これが役立つことを願っています。

于 2012-12-27T09:28:34.423 に答える