在什么情况下我会使用“netsh http add urlacl”?

在什么情况下我会使用“netsh http add urlacl”?

我试图了解在哪种情况下需要使用这样的命令:

netsh http add urlacl url=http://server1:1234/ user=Everyone

这是否就像使用hosts文件可以将特定地址连接到我的计算机一样?(我不这么认为)。

文档对我来说还不是很清楚:

Netsh 是一个命令行脚本实用程序,它允许您以本地或远程方式显示或修改当前正在运行的计算机的网络配置。Netsh 还提供了脚本功能,允许您以批处理模式针对指定计算机运行一组命令。Netsh 还可以将配置脚本保存在文本文件中以供存档或帮助您配置其他服务器。

问题:

有人可以提供一个我想要使用它的真实场景(+实现)吗?

附加信息 : 我读了这个问题有人试图通过 C# 访问:

http://localhost:1234有效,但是

http://server1:1234失败

(但是 - 我不明白他为什么不使用hosts可以解决问题的文件) - 但后来另一个人回答说netsh可以解决问题。
所以我想我在这里遗漏了一些东西。

答案1

netsh http修改 的配置时,可以使用http.sys,它与文件完全不同hosts,在 Windows 的较低级别上工作。此级别是处理 HTTP 服务器运行的级别在您的计算机本地,因此担心来自进入你的电脑,而不是那些出去到互联网。

这是 Windows 中用于服务 URL 请求的架构:

http.sys 架构

http.sys是监听 HTTP 流量并根据 URL 将请求分派给进程的驱动程序,因此多个进程可以在同一个端口上监听 HTTP 流量。

http.sys在 Windows Server 2003 中引入。以前,应用程序只是在端点 (IP:Port) 上打开一个套接字,监听传入流量并对其进行解析。问题是,这使得所有应用程序都无法使用端口 80 (http) 和 443 (https),​​因为在套接字模型中,只有一个应用程序可以在任何给定时间监听端点。

当。。。的时候Internet 信息服务 (IIS) Web 服务器或任何使用 HTTP 服务器 API 的应用程序监听某个 HTTP 请求路径,它们需要在 上注册 URL 前缀http.sys。我们称这个过程为登记

当传入请求被拾取http.sys并被传送到正确的注册应用程序时,这被称为路由

任何以管理员模式运行的应用程序都可以注册 URL。非管理员应用程序需要使用netsh http add urlacl 来接收请求。

结论:由于您没有构建以非管理员模式运行的低级 URL 服务器,因此您没有理由使用netsh http add urlacl

参考 :

相关内容