如何区分请求转到127.0.0.1和localhost之间的区别。ASP.NET - 告诉localhost和127.0.0.1之间的区别
这行代码在Windows 7和VS2010内置的web服务器上无法区分。
if (Request.ServerVariables["SERVER_NAME"].ToLower() == "localhost")
{
}
尝试按自己的内置web服务器: http://127.0.0.1/ 然后 http://localhost/
如何区分请求转到127.0.0.1和localhost之间的区别。ASP.NET - 告诉localhost和127.0.0.1之间的区别
这行代码在Windows 7和VS2010内置的web服务器上无法区分。
if (Request.ServerVariables["SERVER_NAME"].ToLower() == "localhost")
{
}
尝试按自己的内置web服务器: http://127.0.0.1/ 然后 http://localhost/
Request.Headers将分化的要求:
if (Request.Headers["host"].ToLower() == "localhost")
{
//shouldn't be hit for 127.0.0.1
}
注:根据您的需要,你将不得不考虑您的检查之前清偿的端口号。
这或HTTP_HOST会做的伎俩。这很棒。将帮助我避免我所看到的问题。 (见tvanfosson评论) – BuddyJoe 2010-06-17 22:21:47
什么关系呢?你不想只知道连接是否是本地连接?我只会使用IsLocal
属性。
if (Request.IsLocal)
{
}
实际上它确实如此。 Windows 7中的内置DNS本地主机分辨率非常糟糕。取消hosts文件中的行注释似乎没有帮助。而我需要打127.0.0.1而不是本地主机或其死缓。每一个请求都会浪费时间来解析DNS。在ajax沉重的应用程序,这是可怕的。 – BuddyJoe 2010-06-17 22:16:49
与IPv6堆栈有关。 http://stackoverflow.com/questions/1726585 – BuddyJoe 2010-06-17 22:25:50
也许这是Firefox的问题,我可以使用这些修复程序之一。但我仍然想知道如何绕过127.0.0.1的DNS。关于IsLocal的好处,虽然+1 – BuddyJoe 2010-06-17 22:27:58
实际上,你可以指定任何名字作为本地主机服务器名称(只需编辑您的主机文件,例如,用一个任意名称)
你可能需要让机器告诉你,如果它是一个地方请求而不是试图为自己弄明白。
看到评论 - 将不得不检查只是随机选择名称并将其放入主机的速度。我之前在其他操作系统上完成了此操作,但之前未安装Windows 7。 – BuddyJoe 2010-06-17 22:23:09
你试过了吗:HTTP_HOST? – 2010-06-17 21:58:01
让我试试。 – BuddyJoe 2010-06-17 22:17:16