【问题标题】:ASP.NET MVC find what page sent the Ajax requestASP.NET MVC 查找发送 Ajax 请求的页面
【发布时间】:2014-06-27 23:00:23
【问题描述】:

我正在为我们的网站实施分析,我基本上只是在Application_BeginRequest()Application_EndRequest() 中使用计时器来跟踪请求时间。

问题是在Application_EndRequest()中,我可以通过Request.RawUrl获取Ajax请求的URL,但是我怎样才能知道是哪个页面发送了这个请求呢?

【问题讨论】:

    标签: ajax asp.net-mvc profiling httprequest


    【解决方案1】:

    您可以检查Request.UrlReferrer 以获取发出请求的页面,但请记住,某些浏览器可能不会在 ajax 请求中发送referer,您应该在代码中考虑这种情况。


    或者,您应该在所有 ajax 调用中传递一个包含当前 url 的附加参数。

    【讨论】:

    • 太棒了!正是我想要的。
    【解决方案2】:

    除此之外,您还可以使用下面的代码来传递请求页面的 url

    $(document).ready(function() {
         jQuery.ajaxSetup({
              beforeSend: function (xhr) {
                    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
                    xhr.setRequestHeader('X-Referrer', location.href);//this will do
                    return xhr;
              }
         });
    });
    

    在服务器端,使用 actionfilter 并将 IsAjaxRequest 属性放入控制器类中

    [AjaxDetector]
    public abstract class SomeController : Controller
    {
       public bool IsAjaxRequest { get; set; }
       public string Referrer { get; set; }
    }
    
    public class AjaxDetector : ActionFilterAttribute  
    {  
        public override void OnActionExecuting(ActionExecutingContext filterContext)  
        {   
            SomeController someController = filterContext.Controller as SomeController;
            if (myController != null)
            {
                if (filterContext.HttpContext.Request.Headers["X-Requested-With"] != null
                    && filterContext.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
                {
                    someController.IsAjaxRequest = true;
                    someController.Referrer=filterContext.HttpContext.Request.Headers["X-Referrer"]
                }
                else
                {
                    someController.IsAjaxRequest = false;
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      相关资源
      最近更新 更多