我想根据用户是否使用代理服务器来提供其他内容。
if(FROM_PROXY){
routes.MapRoute(
name: "ProxyDefault",
url: "{controller}/{action}/{id}",
defaults: new { controller = "HomeProxy",
action = "Index", id = UrlParameter.Optional
}
);
}
那么,如何检测我的asp.net mvc应用程序是否通过代理访问?
您可以注册以下全局过滤器:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class BlockProxyAccessAttribute : ActionFilterAttribute
{
private static readonly string[] HEADER_KEYS = { "VIA", "FORWARDED", "X-FORWARDED-FOR", "CLIENT-IP" };
private const string PROXY_REDIR_URL = "/error/proxy";
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var isProxy = filterContext.HttpContext.Request.Headers.AllKeys.Any(x => HEADER_KEYS.Contains(x));
if (isProxy)
filterContext.Result = new RedirectResult(PROXY_REDIR_URL);
}
}
(用于代理确定的候选标头密钥来自此答案)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句