确定请求是否来自本地网络(Intranet)

asa*_*ani 9 c# asp.net iis sharepoint asp-classic

我需要使用客户端或服务器端来识别请求是来自Internet还是Intranet.

我想解决的问题是:我们的网站可以从互联网和内部网访问.Intranet用户(公司内部的用户)无法访问Internet.我们正在使用Google Anylitics,当Intranet用户访问该页面时,该页面需要很长时间才能上传,因为它会尝试下载(ga)从Google生成的JavaScript文件.

有解决方案吗

aut*_*att 13

您可以检查用户的IP地址.私有ip4地址始终以10. ,或172.或192.*开头... 这里有关私人网络的更多信息.

您还可以将Google Analytics加载为异步.

*****************更新 - 请仔细阅读*************************************

正如@ igor-turman正确指出的那样,只有"172"和"192"地址范围的一部分被指定供私人使用. 从172和192开始的剩余IP地址是PUBLIC.

以下是检查私有IP地址的正则表达式:

(^192\.168\.([0-9]|[0-9][0-9]|[0-2][0-5][0-5])\.([0-9]|[0-9][0-9]|[0-2][0-5][0-5])$)|(^172\.([1][6-9]|[2][0-9]|[3][0-1])\.([0-9]|[0-9][0-9]|[0-2][0-5][0-5])\.([0-9]|[0-9][0-9]|[0-2][0-5][0-5])$)|(^10\.([0-9]|[0-9][0-9]|[0-2][0-5][0-5])\.([0-9]|[0-9][0-9]|[0-2][0-5][0-5])\.([0-9]|[0-9][0-9]|[0-2][0-5][0-5])$)
Run Code Online (Sandbox Code Playgroud)

您可以在regexpal.com测试这个表达式这里.

  • 不正确.只有172.*和192.*范围的部分被指定为私有部分:https://www.arin.net/knowledge/address_filters.html (4认同)
  • @autonomatt,您应该更新或删除您的答案,因为投票的人会被它误导,如果他们只是相信您的答案而不研究细节,可能会导致大麻烦。 (2认同)