[node.js] node.js Express에서 현재 요청의 호스트 이름 가져 오기

따라서 여기에 간단한 것이 누락되었을 수 있지만 응답을 보내려는 요청 객체가 요청 된 호스트 이름을 얻는 방법을 찾지 못하는 것 같습니다.

현재 node.js에서 사용자가 어떤 호스트 이름을 방문하고 있는지 알아낼 수 있습니까?



답변

HTTP 요청에 대해 이야기하는 경우 다음에서 요청 호스트를 찾을 수 있습니다.

request.headers.host

그러나 그것은 들어오는 요청에 의존합니다.

http://nodejs.org/docs/v0.4.12/api/http.html#http.ServerRequest 에서 자세히 알아보십시오.

머신 / 네이티브 정보를 찾고 있다면 프로세스 오브젝트를 시도하십시오.


답변

os 모듈을 사용할 수 있습니다 :

var os = require("os");
os.hostname();

http://nodejs.org/docs/latest/api/os.html#os_os_hostname을 참조 하십시오.

주의 사항 :

  1. IP 주소로 작업 할 수있는 경우-컴퓨터에 여러 개의 네트워크 카드가있을 수 있으며, 지정하지 않으면 노드가 모든 카드를 수신하므로 요청이 들어온 NIC가 어떤 NIC인지 알 수 없습니다.

  2. 호스트 이름은 DNS 문제입니다. 여러 DNS 별칭이 동일한 시스템을 가리킬 수 있다는 것을 잊지 마십시오.


답변

다른 대안이 있습니다

req.hostname

Express Docs 에서 이에 대해 읽으십시오 .


답변

정규화 된 도메인 이름이 필요하고 HTTP 요청이없는 경우 Linux에서 다음을 사용할 수 있습니다.

var child_process = require("child_process");

child_process.exec("hostname -f", function(err, stdout, stderr) {
  var hostname = stdout.trim();
});


답변

우선, 답변을 제공하기 전에 헤더를 신뢰함으로써 피싱과 같은 보안 취약성에 대한 문을 열고 있다는 사실을 미리 알고 싶습니다. 따라서 리디렉션을 위해 먼저 URL이 인증되었는지 확인하지 않고 헤더의 값을 사용하지 마십시오.

그러면 운영 체제 호스트 이름이 반드시 DNS 이름과 일치하지 않아도됩니다. 실제로 하나의 IP에는 둘 이상의 DNS 이름이있을 수 있습니다. 따라서 HTTP 목적으로 운영 체제 구성에서 시스템에 지정된 호스트 이름을 사용할 수 있다는 보장은 없습니다.

내가 생각할 수있는 최선의 선택은 HTTP 리스너 공개 IP를 얻고 DNS를 통해 이름을 확인하는 것입니다. 자세한 내용은 dns.reverse방법을 참조하십시오. 그러나 IP에 여러 이름이 연결되어있을 수 있습니다.


답변