NodeJS Connect를 사용하여 요청에서 요청 http 헤더를 추출하는 방법


265

Node JS의 Connect 라이브러리 번들을 사용하여 만든 요청의 "Host"헤더를 가져오고 싶습니다. 내 코드는 다음과 같습니다

var app = connect()
  .use(connect.logger('dev'))
  .use(connect.static('public'))
  .use(function(req, res){

    var host = req.???

  })
 .listen(3000);

connect에 대한 문서는 여기 있지만 req위의 코드에서 객체 의 API를 자세히 설명하는 것은 없습니다 . http://www.senchalabs.org/connect/

편집 : 성공적인 답변은 설명서를 가리켜 야합니다 (필요한 API를 제공 한 버전을 확인하려면 이것이 필요합니다).

답변:



198

HTTP 요청 헤더 목록을 보려면 다음을 사용하십시오.

console.log(JSON.stringify(req.headers));

JSON 형식으로 목록을 반환합니다.

{
"host":"localhost:8081",
"connection":"keep-alive",
"cache-control":"max-age=0",
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"upgrade-insecure-requests":"1",
"user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36",
"accept-encoding":"gzip, deflate, sdch",
"accept-language":"en-US,en;q=0.8,et;q=0.6"
}

2
위의 허용 된 답변보다 도움이되는 것으로 나타났습니다. JSON.stringify는 모든 차이를 만듭니다.
Patrick

1
require('util').inspect(req.headers, {depth: null}Node REPL에서 얻을 수있는 것과 동등한 것을 원한다면 관련 메모에서 완전히 수행 할 수도 있습니다 . 어느 쪽이든 문자열로 끝납니다.
mikermcneil

4
req.headers공식 Express 문서에 왜 포함되어 있지 않습니까? expressjs.com/ko/api.html#req
user1063287

1
여기에 명백한 headerValue = req.headers['headerName'];
진술

1
파생되지 않은 속성 만 문서화합니다. 위에서 언급 한 Express 문서에는 다음과 같은 참고 사항이 있습니다. "req 오브젝트는 Node 자체 요청 오브젝트의 향상된 버전이며 모든 내장 필드 및 메소드를 지원합니다 ." 이것은 기본 객체의 노드 문서를 가리키는 링크를 포함합니다.
N

141

console.log(req)또는 출력 확인console.log(req.headers);


11
req.headers에 대해 어떻게 알게 되었습니까? 이 필드는 어떤 버전으로 제공됩니까?
Alex Spurling

11
@AlexSpurling nodejs.org/api/http.html#http_request_headers을 . 연결은 노드의에서 유형의 확장 HTTP 모듈 - http.ServerRequesthttp.ServerResponse. 노드 문서에있는 등록 정보 또는 이벤트는 Connect와 함께 사용할 수 있어야합니다 (추가로 Express).
Jonathan Lonowski

1
더 이해가 되네요. 다시 한 번, 해당 정보를 찾을 수있는 위치 (요청 유형이 실제로 http.ServerRequest 임)를 아는 것이 좋습니다. 문서가 이것을 명확하게 나타내지 않습니다.
Alex Spurling

1
요청 유형은 http.IncomingMessage
Anatoliy

이 요점은 http 요청을 에뮬레이트하고 당신에게 유용 할 수 있습니다 : gist.github.com/3879071
Anatoliy

56
var host = req.headers['host']; 

헤더는 헤더 문자열을 객체 키로 사용하여 JavaScript 객체에 저장됩니다.

마찬가지로 사용자 에이전트 헤더는 다음과 같이 얻을 수 있습니다.

var userAgent = req.headers['user-agent']; 

3
참고 : 명명 된 인덱스 값은 FreakING !! 대소 문자 구분
Steve

9
@Steve 의견에 따르면 대소 문자를 구분한다는 것은 모든 헤더가 소문자입니다. 따라서 헤더 "Origin"(자본 'O')을 설정하는 경우 요청 헤더 컬렉션의 유일한 요소는 소문자 'o'가있는 "origin"입니다.
rob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.