gpt4 book ai didi

c# - XMLHttpRequest() 未被识别为 IsAjaxRequest?

转载 作者:行者123 更新时间:2023-11-30 12:26:27 27 4
gpt4 key购买 nike

为了在 Ajax 请求 session 超时时将用户重定向到登录页面,我实现了以下自定义属性,

Unauthorize请求相关代码如下,

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.StatusCode = 403;
filterContext.Result = new JsonResult
{
Data = new
{
Error = "SessionTimeOut"
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
filterContext.HttpContext.Response.End();
}
....................

这适用于 ajax 请求($.ajax)。

但是 filterContext.HttpContext.Request.IsAjaxRequest() 无法将 XMLHttp 请求识别为 ajax 请求。

var xhr = new XMLHttpRequest();
xhr.open('POST', "...URL");
xhr.send(formdata);

有没有人遇到过类似的问题?对此有什么解决方案?

最佳答案

这是 ASP.NET MVC 5 中 IsAjaxRequest() 的代码

public static bool IsAjaxRequest(this HttpRequestBase request)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
return request["X-Requested-With"] == "XMLHttpRequest" || (request.Headers != null && request.Headers["X-Requested-With"] == "XMLHttpRequest");
}

为了使该函数返回 true,似乎依赖于请求中的某个 header 值 (X-Requested-With)。

这里有一些关于X-Requested-With的更多信息

What's the point of the X-Requested-With header?

您总是可以查看 jQuery $.ajax() 代码本身,了解它是如何设置 header 的。老实说,如果没有 jQuery,我不会费心做 ajax,它会为你处理所有这些事情。

关于c# - XMLHttpRequest() 未被识别为 IsAjaxRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28936319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com