2012-12-27 3 views
0

일부 헤더 값을 Response 객체에 추가하는 필터를 작성했습니다.jsp 페이지에서 null 값을 반환하는 request.getHeader

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);  

    } 

필터 매핑 아래와 같이

doFilter 일부 헤더 값을 설정된다 "/*"이다.

환영 페이지로 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> 

내가 페이지에 널 출력을 얻고있다. 값이 "SAMEORIGIN"으로 설정된 경우 null 값을 얻는 방법을 얻지 못했습니다.

XFRAMEnull 

여기에 대한 하나의 도움을 할 수 있습니다.

답변

2

간단합니다. HttpServletResponse 헤더에 속성을 추가했으며 HttpServletRequest 헤더에서 읽을 예정입니다. 그렇게하면 효과가 없습니다.

이해해야 할 사항은 HTTP 프로토콜입니다. HttpServletRequest은 클라이언트 측에서 서버로 들어오는 요청이고 HttpServletResponse은 서버에서 전송 된 스트림과 클라이언트에서 브라우저로 렌더링 한 스트림으로 응답하는 데이터의 응답입니다.

요청/응답의 각 헤더에는 서버가받은 내용, 수신 된 데이터를 변환하는 방법 및 반환 할 응답을 알기 위해 필요한 정보가 있습니다. 따라서 각각의 요청/응답이 HTTP 요청/응답 프로토콜을 따르므로 HttpServletRequest.getHeaders()HttpServletResponse.getHeaders()과 거의 동일하지 않은 이유는 무엇입니까?

또한 응답을 채울 것으로 예상 할 수 없으며 요청에 마술처럼 나타납니다.

이 정보가 도움이되기를 바랍니다.

+0

감사합니다. 읽는 방법을 말해 줄 수 있나요 – Patan

+0

수 없습니다. 한 가지 방법은'HttpServletRequest'에서 세션을 가져오고, 거기에 매개 변수를 추가하고,'session.getAttribute()'메소드를 사용하여 세션에서 가져 오는 것입니다. –

+0

@BuhakeSindi : 세션을 사용하여 요청 범위 속성을 저장하는 이유는 무엇입니까? 요청을 사용하십시오. –

관련 문제