C'# 检查 Ajax 是否调用 c# 端



我下面有一些代码,这样当用户在mvc控制器中调用方法时,它会进行一些检查,看看它是否是Ajax调用。如果Ajax返回json响应,则返回url字符串(安全页面(。当我在visualstudio中运行时,代码工作得很好,所以它识别出调用是ajax调用,但在生产服务器变量"上;isAjax";设置为false。为什么它可以在visual(localiis(中本地工作,但不能在服务器上工作?

var isAjax = (filterContext.RequestContext.HttpContext.Request["X-Requested-With"] == "XMLHttpRequest") ||
((filterContext.RequestContext.HttpContext.Request.Headers != null) &&
(filterContext.RequestContext.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest"));

在浏览器的网络选项卡上,它显示正在通过(下图(

网络选项卡

public ActionResult GetData()
{
if(Request.IsAjaxRequest())
return RedirectToAction("AjaxRequest");
else
return RedirectToAction("NonAjaxRequest");
}

您可以在控制器级别检查当前请求,而不是检查标头。

AJAX调用将有一个名为X-Requested-With的头,其值将为XMLHttpRequest。所以你可以这样检查:

bool isAjaxRequest = request.Headers["X-Requested-With"] == "XMLHttpRequest";

否则,您可以使用System.Web.MVC引用并使用该函数。

bool isAjaxRequest = Request.IsAjaxRequest();

最新更新