[javascript] express.js에서 요청을 시작한 도메인을 얻으려면 어떻게해야합니까?

나는 express.js를 사용하고 있으며 호출을 시작하는 도메인을 알아야합니다. 이것은 간단한 코드입니다

app.get(
    '/verify_license_key.json',
    function( req, res ) {
        // do something

req또는 res개체 에서 도메인을 가져 오려면 어떻게합니까 ? somesite.com 또는 someothersite.com에서 API를 호출했는지 알아야합니다. 나는 모두의 console.dir 일을 시도 req하고 res있지만, 나 또한 문서를 읽을 수 있지만 그것은 나에게 아무런 도움을주지 않았다, 거기에서 아무 생각 없어.



답변

HOST헤더 에서 검색해야합니다 .

var host = req.get('host');

HTTP 1.0에서는 선택 사항이지만 1.1에서는 필요합니다. 또한 앱은 항상 자체 요구 사항을 부과 할 수 있습니다.


이것이 cross-origin 요청 을 지원하는 경우 대신 Origin헤더 를 사용합니다 .

var origin = req.get('origin');

일부 교차 출처 요청에는 preflight “요청을 통한 유효성 검사가 필요합니다 .

req.options('/route', function (req, res) {
    var origin = req.get('origin');
    // ...
});

클라이언트의 IP를 찾는 경우 다음을 사용하여 검색 할 수 있습니다.

var userIP = req.socket.remoteAddress;

서버가 프록시 뒤에있는 경우 프록시의 IP를 제공 할 수 있습니다. 사용자의 IP를 얻을 수 있는지 여부는 프록시가 전달하는 정보에 따라 다릅니다. 그러나 일반적으로 헤더에도 있습니다.


답변

대신에:

var host = req.get('host');
var origin = req.get('origin');

다음을 사용할 수도 있습니다.

var host = req.headers.host;
var origin = req.headers.origin;


답변

Express 4.x에서는 req.hostname포트없이 도메인 이름을 반환 하는를 사용할 수 있습니다 . 즉 :

// Host: "example.com:3000"
req.hostname
// => "example.com"

참조 : http://expressjs.com/en/4x/api.html#req.hostname


답변

최근에 ‘Origin’요청 헤더를 가져 오는 데 문제가 발생하여이 질문을 발견했습니다. 그러나 결과와 상당히 혼란스럽고 req.get('host')사용되지 않으므로 Undefined. 사용하다,

    req.header('Origin');
    req.header('Host');
    // this method can be used to access other request headers like, 'Referer', 'User-Agent' etc.


답변