1

如何ActionFilterAttribute使用 ASP.NET Web API 测试本地主机?我想跳过 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);
        }
    }
4

2 回答 2

3

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

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

更好的方法是在他的博客文章中使用 Filip 的建议:

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

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

于 2013-02-23T03:33:41.270 回答
1

看起来这行得通。让我知道我是否不正确。

request.RequestUri.IsLoopback
于 2013-02-22T18:44:57.197 回答