我有一个挑战,我相信有一个比我更聪明的开发人员可以提供一些见解。
我有一个网络服务。此 Web 服务是用 C# 中的 ASP.NET MVC 编写的。我想让开发人员调用这个网络服务。当开发人员编写代码时,我认识到 Web 应用程序通常从 localhost 运行。当他们调用此服务时,我希望能够确定请求是否来自本地主机。但是,如果我查看 IP 地址,它是他们机器的 IP 地址。
我有办法做到这一点吗?显然 Request.IsLocal 将不起作用,因为我的 Web 服务在完全不同的机器上运行。
我有一个挑战,我相信有一个比我更聪明的开发人员可以提供一些见解。
我有一个网络服务。此 Web 服务是用 C# 中的 ASP.NET MVC 编写的。我想让开发人员调用这个网络服务。当开发人员编写代码时,我认识到 Web 应用程序通常从 localhost 运行。当他们调用此服务时,我希望能够确定请求是否来自本地主机。但是,如果我查看 IP 地址,它是他们机器的 IP 地址。
我有办法做到这一点吗?显然 Request.IsLocal 将不起作用,因为我的 Web 服务在完全不同的机器上运行。
调用 Web 服务时,浏览器通常会在 Referer 标头中传递页面。因此,您可以检查该值是否以“http://localhost”开头。几乎可以伪造 http 请求中的任何内容(包括这个),所以要小心根据这些数据做出什么样的决定。
如果不传递一些额外的数据以及来自应用程序的请求,您将无法知道任何方式。
您将只能获取用于向您的 Web 服务发出请求的 IP 地址或主机名,听起来您希望能够找到用于向您发出请求的主机名 (localhost)应用程序(然后触发对 Web 服务的调用)。
然后,您将如何定义本地(从您的服务的角度)?您最好在不同的 API 端点上设置开发服务,而不是试图猜测这一点。
所有生产级 API 调用都可以api.yourservice.com通过dev.yourservice.com.
然后,您可以拥有两个单独的服务,或者让您的服务读取所请求的 URL 并据此进行区分。