check是nodejs连接来自localhost

时间:2014-02-24 12:06:11

标签: javascript node.js

有没有办法检查nodejs连接的来源?

在javascript中我们做

if (window.location.host == "localhost")
{
    // Do whatever
}

但我不知道如何在nodejs中执行此操作,我想做(然后我只需要为git repo维护1个文件夹)

if (window.location.host == "localhost"){
    // connect to localhost mongodb
}else{
    // connect to mongodb uri
}

4 个答案:

答案 0 :(得分:4)

var os = require('os');
var database_uri;

if(os.hostname().indexOf("local") > -1)
  database_uri = "mongodb://localhost/database";
else
  database_uri = "mongodb://remotehost/database";

//Connect to database
mongoose.connect(database_uri, 
                 function(err){
                   if(err) console.log(err); 
                   else console.log('success');});

答案 1 :(得分:2)

检查req.headers.host。如果是localhost或127.0.0.1使用你的逻辑来做localhost的东西。 http://nodejs.org/api/http.html#http_http_incomingmessage

req.headers.host还包含端口,您可能需要在检查前剪切它。

答案 2 :(得分:1)

最好的方法是使用:

req.connection.remoteAddress

答案 3 :(得分:1)

我在表达中使用的是ip V4:

#include<iostream>
using namespace std;

int main()
{
  int a,b;
  cin>>a;
  cin>>b;
  cout<<" "<<endl;
  string c;
  getline(cin,c);
  int i=1;
  int s=0;
  while(c[i]!='\0')
  {
    if(c[i]=='1')
    {
      s+=a;
      a=a*a;
      i++;
    }
    else
    {
      a=a*a;
      i++;
    }  
  }
  int r=s%b;
  cout<<r;
  return 0;
}

ipV4包含调用客户端的正确值,如果通过这种方式访问​​计算机,则为==='localhost'。

您必须了解它的工作方式与在浏览器中运行的js脚本不同,这与客户端通过网络接口连接到服务器有关。

对于您描述的用例,即通过“ localhost”进行访问。

对于其他用例,您可能需要做更多的事情,但是 local 表示它正在使用计算机中的一个接口,因此您可以检查所有接口是否匹配。< / p>