如果我的MVC应用程序中有一个Web API Controller,并且我通过jQuery $ ajax向它调用GET请求,那么如何验证该调用以确保它来自我的应用程序?
我需要检查它来自哪个IP吗?我可以使用AntiForgeryToken吗?
我基本上希望API控制器只允许来自我的应用程序的请求,而不是来自只知道端点的其他人的请求。我不希望人们能够复制API调用。
答案 0 :(得分:2)
您可以使用CORS限制来自其他来源的来电。与CORS一起,您还应该使用身份验证来保护api(以防止未经身份验证的访问)。
要禁用来自其他来源的请求,您可以在web api(web api 2)上使用[DisableCors]属性。默认情况下,CORS被禁用。如果在更高级别(前控制器)启用并且您希望限制在较低级别(例如),则应使用此属性
[DisableCors]
public class UsersController : ApiController
{
public HttpResponseMessage GetUser(int id) { ... }
}
启用对此控制器的访问权限
[EnableCors(origins: "http://www.contoso.com", headers: "*", methods: "*")]
public class UsersController : ApiController
{
public HttpResponseMessage GetUser(int id) { ... }
}