java에서 HttpRequest Header를 가져오는 몇 가지 방법
http Header를 처리하는 몇 가지 방법을 요약했습니다.
HttpServletRequest 활용
import javax.servlet.http.HttpServletRequest;
//...
private HttpServletRequest request;
//get request headers
private Map<String, String> getHeadersInfo() {
Map<String, String> map = new HashMap<String, String>();
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
map.put(key, value);
}
return map;
}
대표적인 예는 다음과 같습니다.
"headers" : {
"Host" : "yihaomen.com",
"Accept-Encoding" : "gzip,deflate",
"X-Forwarded-For" : "66.249.x.x",
"X-Forwarded-Proto" : "http",
"User-Agent" : "Mozilla/5.0 (compatible; Googlebot/2.1; +
http://www.google.com/bot.html
)",
"X-Request-Start" : "1389158003923",
"Accept" : "*/*",
"Connection" : "close",
"X-Forwarded-Port" : "80",
"From" : "googlebot(at)googlebot.com"
}
user-agent 가져오기
import javax.servlet.http.HttpServletRequest;
//...
private HttpServletRequest request;
private String getUserAgent() {
return request.getHeader("user-agent");
}
대표적인 예는 다음과 같습니다.
Mozilla/5.0 (compatible; Googlebot/2.1; +
http://www.google.com/bot.html
)
spring mvc를 이용하여 HttpRequest Header를 가져오는 예
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/site")
public class SiteController {
@Autowired
private HttpServletRequest request;
@RequestMapping(value = "/{input:.+}", method = RequestMethod.GET)
public ModelAndView getDomain(@PathVariable("input") String input) {
ModelAndView modelandView = new ModelAndView("result");
modelandView.addObject("user-agent", getUserAgent());
modelandView.addObject("headers", getHeadersInfo());
return modelandView;
}
//get user agent
private String getUserAgent() {
return request.getHeader("user-agent");
}
//get request headers
private Map<String, String> getHeadersInfo() {
Map<String, String> map = new HashMap<String, String>();
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
map.put(key, value);
}
return map;
}
}
아마도 누군가는 Http Header가 시뮬레이션을 할 수 있다고 말할 것이다. 그러면 자신은 이런 시스템을 속이는 데 사용할 수 있다. 그렇다. 그렇기 때문에 Http Header로 가치를 전달할 때 모든 요청은 Portal을 통해 처리해야 한다. 그리고forward가 각 서브시스템에 도착하면 이 문제가 발생하지 않을 것이다.Portal은 먼저 사용자가 제기한 모든 요청을 차단합니다. 만약에 구조된 사용자라면 Portal의session도 기록이 없고 로그인 페이지로 넘어갈 것입니다. 만약protal의session에 기록되고 HttpHeader에도 기록이 있다면 서브시스템은 합법적인 사용자입니다. 그리고 자신은 일부 요구에 따라 업무 논리를 처리할 수 있습니다.JSP/Java HTTP 헤더 정보 가져오기(request) 예
<%
//header.jsp
out.println("Protocol: " + request.getProtocol() + "<br>");
out.println("Scheme: " + request.getScheme() + "<br>");
out.println("Server Name: " + request.getServerName() + "<br>" );
out.println("Server Port: " + request.getServerPort() + "<br>");
out.println("Protocol: " + request.getProtocol() + "<br>");
out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo() + "<br>");
out.println("Remote Addr: " + request.getRemoteAddr() + "<br>");
out.println("Remote Host: " + request.getRemoteHost() + "<br>");
out.println("Character Encoding: " + request.getCharacterEncoding() + "<br>");
out.println("Content Length: " + request.getContentLength() + "<br>");
out.println("Content Type: "+ request.getContentType() + "<br>");
out.println("Auth Type: " + request.getAuthType() + "<br>");
out.println("HTTP Method: " + request.getMethod() + "<br>");
out.println("Path Info: " + request.getPathInfo() + "<br>");
out.println("Path Trans: " + request.getPathTranslated() + "<br>");
out.println("Query String: " + request.getQueryString() + "<br>");
out.println("Remote User: " + request.getRemoteUser() + "<br>");
out.println("Session Id: " + request.getRequestedSessionId() + "<br>");
out.println("Request URL: " + request.getRequestURL() + "<br>");
out.println("Request URI: " + request.getRequestURI() + "<br>");
out.println("Servlet Path: " + request.getServletPath() + "<br>");
out.println("Created : " + session.getCreationTime() + "<br>");
out.println("LastAccessed : " + session.getLastAccessedTime() + "<br>");
out.println("Accept: " + request.getHeader("Accept") + "<br>");
out.println("Host: " + request.getHeader("Host") + "<br>");
out.println("Referer : " + request.getHeader("Referer") + "<br>");
out.println("Accept-Language : " + request.getHeader("Accept-Language") + "<br>");
out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding") + "<br>");
out.println("User-Agent : " + request.getHeader("User-Agent") + "<br>");
out.println("Connection : " + request.getHeader("Connection") + "<br>");
out.println("Cookie : " + request.getHeader("Cookie") + "<br>");
%>
request 정보getHeader("Referer")의 설명request.getHeader(Referer)에서 방문자 주소를 가져옵니다.링크를 통해 현재 페이지에 접근할 때만 이전 페이지의 주소를 얻을 수 있습니다.그렇지 않으면 요청합니다.getHeader("Referer")의 값은 Windows를 통해 Null입니다.오픈은 현재 페이지를 열거나 주소를 직접 입력하거나 Null입니다.
지금까지 여러분을 위해 가져온 자바가 Http Request Header를 획득하는 몇 가지 방법(본편)의 모든 내용입니다. 여러분에게 도움이 되고 많은 응원 부탁드립니다~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.