我在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地址)。
答案 0 :(得分:1)
没有直截了当的答案。 Rob共享的主题有一些很好的见解。但是,需要了解在请求到达服务器之前可能会发生很多事情。中间网络设备可以操纵TCP标头,因此它可能无法反映您需要的正确IP地址。
从解决方案的角度来看,如果您开发自己的客户端并在某处记录此信息以便跟踪它,这可能是完全可能的。否则,没有可靠的方法来获取此信息。
答案 1 :(得分:1)
是否可以在PAAS解决方案中获取私有IP地址?
在客户端javascript上,没有公开API来获取IPAddress(显然是出于安全考虑)。然后你可以在服务器端获得IPAddress,但通常如果你从公司访问互联网,它会去通过公司代理和服务器看到的Ipaddress永远不会是实际的客户端IP,而是代理服务器的地址。所以这在服务器端是有限的,因为服务器只能看到代理(公共IP地址)。
如果无法实现,是否有办法跟踪客户的PC信息。 (如IP地址,MAC地址)?
您可以可靠跟踪的是用户代理。打破用户代理,我们获得有关浏览器,操作系统版本的some信息。但是用户代理很容易被某些浏览器扩展程序欺骗。
如果您正在寻找浏览器指纹打印或跟踪,请使用 看看Panopticlick,它显示了更多信息 字体&gt;安装,屏幕分辨率,插件安装等跟踪 任何客户。 fingerprintjs2 javascript库有助于track using 26 parameters截至今天