在Crow(C ++库)中获取客户端IP地址的正确方法是什么?

时间:2018-04-16 07:00:39

标签: c++ http crow

我正在使用Crow(C ++服务器库)并尝试获取客户端的IP地址。

我找到了这个答案,Getting the client IP address: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, what else could be useful?,所以我尝试过:

CROW_ROUTE(app, "/mine")([](const crow::request& req, crow::response& res)
{
    std::string ip_address = req.get_header_value("REMOTE_ADDR");

    res.write(req.get_header_value("HTTP_X_FORWARDED_FOR"));
    res.write(req.get_header_value("HTTP_CLIENT_IP"));
    res.write(req.get_header_value("HTTP_X_FORWARDED"));
    res.write(req.get_header_value("HTTP_X_CLUSTER_CLIENT_IP"));
    res.write(req.get_header_value("HTTP_FORWARDED_FOR"));
    res.write(req.get_header_value("HTTP_FORWARDED"));

    for( auto head : req.headers )
    {
        res.write(head.first);
        res.write(" = ");
        res.write(head.second);
        res.write( "<br/>" );
    }
    res.end();
});

但所有这些标题字段都是空白的。是否有另一种获取IP地址的方法,或者我的浏览器是否没有发送所需信息?

1 个答案:

答案 0 :(得分:0)

这对我有用:

std::string str_IP_and_PortNumber("");
auto itr = req.headers.find("Host");
if (itr != req.headers.end())
{
  str_IP_and_PortNumber = itr->second;
}

实际上,不确定这是否是您需要的-获取客户端的服务器的IP和端口号。如果需要其他功能,只需在调试视图窗口中查看req.headers树,然后找到您感兴趣的字符串键即可。