0

我有一个挑战,我相信有一个比我更聪明的开发人员可以提供一些见解。

我有一个网络服务。此 Web 服务是用 C# 中的 ASP.NET MVC 编写的。我想让开发人员调用这个网络服务。当开发人员编写代码时,我认识到 Web 应用程序通常从 localhost 运行。当他们调用此服务时,我希望能够确定请求是否来自本地主机。但是,如果我查看 IP 地址,它是他们机器的 IP 地址。

我有办法做到这一点吗?显然 Request.IsLocal 将不起作用,因为我的 Web 服务在完全不同的机器上运行。

4

3 回答 3

1

调用 Web 服务时,浏览器通常会在 Referer 标头中传递页面。因此,您可以检查该值是否以“http://localhost”开头。几乎可以伪造 http 请求中的任何内容(包括这个),所以要小心根据这些数据做出什么样的决定。

于 2012-12-21T01:32:41.210 回答
0

如果不传递一些额外的数据以及来自应用程序的请求,您将无法知道任何方式。

您将只能获取用于向您的 Web 服务发出请求的 IP 地址或主机名,听起来您希望能够找到用于向您发出请求的主机名 (localhost)应用程序(然后触发对 Web 服务的调用)。

于 2012-12-20T18:36:59.270 回答
0

然后,您将如何定义本地(从您的服务的角度)?您最好在不同的 API 端点上设置开发服务,而不是试图猜测这一点。

所有生产级 API 调用都可以api.yourservice.com通过dev.yourservice.com.

然后,您可以拥有两个单独的服务,或者让您的服务读取所请求的 URL 并据此进行区分。

于 2012-12-20T18:37:12.693 回答