在ASP.NET Web API ActionFilterAttribute上测试Localhost

时间:2013-02-22 18:30:04

标签: ssl asp.net-web-api localhost

如何使用ASP.NET Web API在ActionFilterAttribute上测试localhost?我想跳过SSL检查。

public class RequireHttpsAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var request = actionContext.Request;
            if (request.RequestUri.Scheme != Uri.UriSchemeHttps)
            {
                throw new ValidationException(new SecureConnection());
            }

            base.OnActionExecuting(actionContext);
        }
    }

2 个答案:

答案 0 :(得分:3)

如果您只想测试请求URI是否为localhost,那么URI上的IsLoopback应该可以正常工作。

但事情就是这样......请求URI很容易被非本地计算机的计算机欺骗。因此,任何远程计算机实际上都可以向您发送带有localhost主机头的请求。

更好的方法是在博客文章中使用菲利普的建议:

http://www.strathweb.com/2013/01/adding-request-islocal-to-asp-net-web-api/

这应该适用于selfhost和webhost以及客户端的IP地址是否为环回。

答案 1 :(得分:1)

看起来这样有效。如果我不对,请告诉我。

request.RequestUri.IsLoopback