Program Club

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

proclub 2020. 12. 11. 18:58
반응형

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

참고 URL : https://stackoverflow.com/questions/18498726/how-do-i-get-the-domain-originating-the-request-in-express-js

반응형