【问题标题】:How can a page tell if it is being served on local LAN? [closed]一个页面如何判断它是否在本地 LAN 上提供服务? [关闭]
【发布时间】:2021-02-18 09:47:15
【问题描述】:

我的项目是一个网络应用程序,用作带有徽标和快速链接的公司登录页面。

我想为本地 LAN 中的用户添加指向基于 LAN 的网页的额外链接,但如果该页面在本地 LAN 之外提供,则隐藏这些链接。

我知道如何隐藏和显示事物 如何判断页面是在局域网内还是在局域网外提供?

这是我迄今为止唯一想到的,但我不确定它是否会奏效。 (strings.left() 是我自己的函数之一,它从字符串的左侧获取前 x 个字符)

protected void Page_Load(object sender, EventArgs e) {
    String thisipaddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

    if (thisipaddress == "127.0.0.1" || strings.left(thisipaddress,7)=="192.168"){
        hiddenarea.Visible = true;
    } else {
        hiddenarea.Visible = false;
    }
}

我想我需要知道的是,使用我当前的代码,如果另一个 LAN 中的用户访问我的页面,我的代码会检测到他们的内部 IP 地址还是外部 IP 地址?

【问题讨论】:

  • 如果您允许外部 Internet 访问 Intranet,通常会被认为存在安全风险。是这样吗?
  • 您需要的是一些使用您自己的 DNS 的网络。不是为了 SO,而是堆栈错误
  • 该页面面向公众。我也想添加指向内部页面的链接——但仅限于它们向内部用户显示。我没有制作内部页面来进行外部访问。我在 Stack Overflow 上发帖是因为我想在 C# 中执行此操作。我只想检测页面是在局域网内部还是外部提供。
  • 这行得通吗? bool isLocal = HttpContext.Current.Request.IsLocal;
  • @bgmCoder IsLocal documentation:“如果请求发起者的 IP 地址是 127.0.0.1 或者请求的 IP 地址与服务器的 IP 地址相同,则 IsLocal 属性返回 true。”

标签: c# asp.net ip-address lan


【解决方案1】:

这可以解决问题。它检测来自局域网外部的外部 IP 地址和来自局域网内部的内部 IP 地址。如果该页面是从外部 LAN 访问并具有匹配的 ipaddress,它仍然返回外部的。

protected void Page_Load(object sender, EventArgs e) {
String thisipaddress = Request.UserHostAddress;   <-----THIS

if (thisipaddress == "127.0.0.1" || strings.left(thisipaddress,7)=="192.168"){
    hiddenarea.Visible = true;
} else {
    hiddenarea.Visible = false;
}

}

https://docs.microsoft.com/en-us/dotnet/api/system.web.httprequest.userhostaddress#System_Web_HttpRequest_UserHostAddress

【讨论】:

  • 数字!我总是在发布问题后立即解决自己的问题。我可以花几个小时来解决它,但是当我发布时,我就解决了!
猜你喜欢
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
相关资源
最近更新 更多