我有一个用 C# 编写的 ASP.Net MVC3 Web 应用程序。
我有一个 ActionResult 旨在返回 Json 结果,以便可以使用 JavaScript 的网页异步调用它。动作基本如下:
public ActionResult FindSomething(string search)
{
var result = GetSearchResult(search);
return Json(new { @Result = result }, JsonRequestBehavior.AllowGet);
}
然后在其中一个网页中,我有一些 JavaScript(使用 JQuery)来获取数据。
但是,我想尝试并做的是限制对此 FindSomething 操作的访问,以便只有我的网站代码才能访问结果。就目前而言,任何人都可以从 Web 浏览器调用此操作。
关于我完成这项工作的一些选择的任何想法?
应该注意的是,不会登录到该网站,因此无法通过这种方式进行身份验证。而且我不想在 html 源代码中包含与密码方法相关的任何内容。
为什么我想要这个:
该FindSomething
方法实际上调用了第三方服务,该服务是使用积分付费的。所以实际上,通话次数越多,它的成本就越高。
我担心的是,如果有人知道这个 URL 并想使用相同的服务,那么他们可以通过我们的 URL 查询它并避免收费。
我不确定这个第 3 方服务是否考虑过这一点,他们提供了几种与服务交互的方式。一种是通过我可以通过服务器代码调用的 Web 服务(我正在这样做),另一种是通过一些内联的 javascript 引用 - 后者需要在 html 源代码中硬编码许可证密钥:S
...可能值得我向他们寻求答案,但无论我如何解决服务中的这个缺陷,它仍然会在 SO 上提出一个有趣的问题