如何知道请求是否为asp.net MVC中的Ajax?


108

有人怎么知道请求是否是ajax?(我正在为ajax使用jquery)


2
您也可以使用Fiddler观看请求。通过这样做您将学到很多东西。
CrazyDart 2010年

Answers:


70

jQuery进行的所有AJAX调用都会添加一个标头,以表明它是AJAX。要检查的标头是X-Requested-With,值将XMLHttpRequest是AJAX调用时的值。

请注意,AJAX请求是普通的GET或POST,因此,除非您(或jQuery之类的AJAX库)在请求中添加其他标头,否则无法确定是否为AJAX。


3
@Omu:Request.Headers["X-Requested-With"]或类似。检查MSDN。标头始终与请求相关。
罗伯特·科里特尼克

179

另外还有Request.IsAjaxRequest,如果你正在使用MVC的更高版本。我没有版本1了,所以我不能说它是否在版本1中。

如果需要在Global.asax.cs中进行此检查,请尝试以下操作: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted我需要在Global.asax.cs中进行此检查,因此这对我无济于事
Omu,2010年

2
@BuildStarted在Application_Error
Omu 2010年

1
是啊,你说得对。这是因为它不在MVC之外,并且没有使用HttpRequestBase。我没有这个需要,所以我看起来并不深。感谢您的注意。

20
新的HttpRequestWrapper(Request).IsAjaxRequest();

1
顺便说一句:如果您在自定义授权过滤器中,请使用此方法在Request上获取IsAjaxRequest方法:filterContext.HttpContext.Request.IsAjaxRequest
user1068352 2016年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.