如何使用.net Core获取传入的请求IP地址

时间:2017-06-26 08:53:39

标签: azure asp.net-core ip-address

我在AZURE环境(PAAS)中部署了我的.NET CORE解决方案。我在那里使用了以下代码片段来获取客户端的IP地址

$( "li:last span").text()

我使用了标准的.net核心库,并对Startup.cs进行了必要的更改

private void createPdf() throws Exception {
    Document doc = new Document();
    PdfSmartCopy copy = new PdfSmartCopy(doc, new FileOutputStream("result.pdf"));
    doc.open();

    PdfReader mainReader = new PdfReader("timesheet.pdf");

    PdfReader reader;
    PdfStamper stamper;
    AcroFields form;
    ByteArrayOutputStream baos;

    for(int i = 0; i < getTotalPages(); i++) {

        reader = new PdfReader(mainReader);
        baos = new ByteArrayOutputStream();
        stamper = new PdfStamper(reader, baos);
        AcroFields form = stamper.getAcroFields();

        //methods to fill forms

        stamper.setFormFlattening(true);
        stamper.close();

        reader = new PdfReader(baos.toByteArray());
        copy.addPage(copy.getImportedPage(reader, 1));
    }

    doc.close();
}

我相信我已经以正确的方式实施了一切。但我仍然没有准确的客户端IP地址。我总是得到客户的公共IP而不是他的私有IP。由于这可以重复(同一办公室2用户具有相同的公共IP),我需要客户端的私有IP而不是他的公共IP。

是否可以在PAAS解决方案中获取私有IP地址。如果不可能,有没有办法跟踪客户的PC信息。 (例如IP地址,MAC地址)。

2 个答案:

答案 0 :(得分:1)

没有直截了当的答案。 Rob共享的主题有一些很好的见解。但是,需要了解在请求到达服务器之前可能会发生很多事情。中间网络设备可以操纵TCP标头,因此它可能无法反映您需要的正确IP地址。

从解决方案的角度来看,如果您开发自己的客户端并在某处记录此信息以便跟踪它,这可能是完全可能的。否则,没有可靠的方法来获取此信息。

答案 1 :(得分:1)

是否可以在PAAS解决方案中获取私有IP地址?

  

不可能在此SO post和此answer中共享这个有关MACAddress的信息

在客户端javascript上,没有公开API来获取IPAddress(显然是出于安全考虑)。然后你可以在服务器端获得IPAddress,但通常如果你从公司访问互联网,它会去通过公司代理和服务器看到的Ipaddress永远不会是实际的客户端IP,而是代理服务器的地址。所以这在服务器端是有限的,因为服务器只能看到代理(公共IP地址)。

如果无法实现,是否有办法跟踪客户的PC信息。 (如IP地址,MAC地址)?

您可以可靠跟踪的是用户代理。打破用户代理,我们获得有关浏览器,操作系统版本的some信息。但是用户代理很容易被某些浏览器扩展程序欺骗。

  

如果您正在寻找浏览器指纹打印或跟踪,请使用   看看Panopticlick,它显示了更多信息   字体&gt;安装,屏幕分辨率,插件安装等跟踪   任何客户。 fingerprintjs2 javascript库有助于track using 26 parameters截至今天