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.ServerRequest와 http.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.