我希望能够在我的 MVC4 应用程序中使用 AJAX 获取/发布到 API 控制器。
但是,我不希望任何人能够设置网页并获取/发布到控制器 - 仅来自从我的服务器提供的网页。
那么,我应该只使用普通控制器并返回数据,而不是 API 控制器吗?(或者我是否误解了使用 API 控制器会打开 Web 应用程序以访问任何 Get/Post?)
谢谢,马克
我希望能够在我的 MVC4 应用程序中使用 AJAX 获取/发布到 API 控制器。
但是,我不希望任何人能够设置网页并获取/发布到控制器 - 仅来自从我的服务器提供的网页。
那么,我应该只使用普通控制器并返回数据,而不是 API 控制器吗?(或者我是否误解了使用 API 控制器会打开 Web 应用程序以访问任何 Get/Post?)
谢谢,马克
这可能与我的问题在这里重复。简而言之,保护 API 端点的唯一方法是让客户端以某种方式进行身份验证。如果您使用 [Authorize] 属性装饰控制器/操作,则可以使用普通的 ASP.NET 身份验证 cookie 来完成此操作。您还可以使用 API 密钥或白名单 IP 地址推出自己的解决方案。有关选项的清单,请参阅此链接。
我对自己的问题发布的答案确实使我的网络应用程序的非消费者更难调用 API 端点,尽管正如 Darin 指出的那样,它可以被规避。用户可以访问网络应用程序获取加密的 AnonymousID 和自定义加密 cookie,将它们插入 Fiddler2(或任何其他客户端),然后在 24-48 小时内尽可能多地访问 API。