我已经公开了MVC WebAPI,只想接受127.0.0.1的请求。原因是要使用此WebAPI函数的应用程序将托管在IIS服务器作为病毒应用程序。
能否有人建议如何实现上述目标,以及是否有很多优雅的解决方案。
覆盖DelegatingHandler
并编写一个自定义处理程序,该处理程序将检查请求主机,如果符合您的条件,则继续或拒绝请求。
public class CustomHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//check here for host of request
if(!criteria)
{
request.Properties.Add("Forbidden", true);
}
return base.SendAsync(request, cancellationToken);
}
}
在WebApiConfig
中将此处理程序注册为
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new CustomHandler());
}
您需要通过自定义软件来完成这些操作吗?
您可以将iis设置为仅绑定到内部地址(甚至可以更改端口),并确保服务器的防火墙不会暴露该绑定。
你能澄清一下想要这个的原因吗?如果只绑定localhost而不公开WebApi,则可以直接从代码中调用api方法。