2013-08-29 14 views
8

これは非常に基本的な質問のように、洗練されたソリューション/回答はありません。MeteorでクライアントのIPアドレスにアクセスするには?

(1)サーバーまたは(2)クライアントからクライアント(リモート)IPアドレスにアクセスするにはどうすればよいですか。

+0

参照:http://stackoverflow.com/questions/102605/can-i-lookup-the-ip-address-of-a-hostname-from-javascript –

+0

cgi-binはどのようなものか、使い方が分かりませんこの目的のために:/ – Chet

答えて

7

フローリンが述べたように、これはすべてき​​れいです私たちが自分でそれをやらなければならない時代の暗黒時代とは対照的に、現在のMeteorとはまったく統合されています。しかし、私はさらに、開いているすべての接続を追跡するパッケージに包み込み、IPアドレスを問い合わせることができます:https://github.com/mizzao/meteor-user-status。それはまた、他の有用なものの束をします。

1

このパッケージを使用することができます:https://github.com/gadicohen/meteor-headers。クライアントとサーバーの両方でヘッダーを取得します。

パッケージなしでやりたければ、上のコードから自分自身を刺激することができます。覚えておいて欲しいのは、0.6.5より前は 'hidden' __meteor_bootstrap__.appを使用し、代わりにWebApp.connectHandlerを使用してください。サーバー上のクライアント

headers = { 
    list: {}, 
    get: function(header, callback) { 
     return header ? this.list[header] : this.list; 
    } 
} 

Meteor.call('getReqHeaders', function(error, result) { 
    if (error) { 
     console.log(error); 
    } 
    else { 
     headers.list = result; 
    } 
}); 

+1

それは非常に素晴らしい解決策です:) – Chet

+0

はかなりサーバーで動作しませんでした - 多分私はそれを間違っている:https://github.com/gadicohen/meteor-headers/ issues/2 – Chet

2

headers = { 
    list: {}, 
    get: function(header) { 
     return header ? this.list[header] : this.list; 
    } 
}; 

var app = typeof WebApp != 'undefined' ? WebApp.connectHandlers : __meteor_bootstrap__.app; 
app.use(function(req, res, next) { 
    reqHeaders = req.headers; 
    return next(); 
}); 

Meteor.methods({ 
    'getReqHeader': function(header) { 
     return reqHeaders[header]; 
    }, 
    'getReqHeaders': function() { 
     return reqHeaders; 
    }, 
}); 
+1

これは廃止されました。クライアントのIPアドレスは、現在、クライアントの「clientAddress」 - http://docs.meteor.com/#/full/meteor_onconnection –

14

クライアントIPの取得:httpリクエストがなければ

は、機能であなたがクライアントIPを得ることができる必要があります:

clientIP = this.connection.clientAddress; 
//EX: you declare a submitForm function with Meteor.methods and 
//you call it from the client with Meteor.call(). 
//In submitForm function you will have access to the client address as above 
httpリクエストと鉄ルータとそのRouter.map機能を使用して

対象路線利用のアクション機能で:

clientIp = this.request.connection.remoteAddress; 
+0

Salut Florinのコアを介して提供されています。この質問は[this one]の完全な複製です(http: /stackoverflow.com/questions/14843232/how-to-get-the-user-ip-address-in-meteor-server)? –

+1

私は全く同意しませんでした。当時、私はそれに答える代わりにコメントをしたかったのですが、十分な評判ポイントがありませんでした。(あなたに所属していない質問/回答にコメントを投稿してください) –

+0

以前のバージョンで動作するアプリケーションを持っている人のために、バージョン0.7.1.1以降でしか利用できません。 – user2602152

関連する問題