요청이 asp.net mvc에서 ajax인지 확인하는 방법은 무엇입니까?


108

아무도 요청이 ajax인지 어떻게 알 수 있습니까? (저는 ajax에 jquery를 사용하고 있습니다)


2
Fiddler를 사용하여 요청을 볼 수도 있습니다. 이렇게하면 많은 것을 배울 수 있습니다.
CrazyDart 2010 년

답변:


70

jQuery가 만든 모든 AJAX 호출에는 AJAX임을 나타내는 헤더가 추가됩니다. 확인할 헤더는 X-Requested-With이며 값은 XMLHttpRequestAJAX 호출 일 때입니다.

AJAX 요청은 일반 GET 또는 POST이므로 사용자 (또는 jQuery와 같은 AJAX 라이브러리)가 요청에 추가 헤더를 추가하지 않는 한 AJAX인지 여부를 알 수있는 방법이 없습니다.


3
@Omu : Request.Headers["X-Requested-With"]또는 유사합니다. MSDN을 확인하십시오. 헤더는 항상 요청과 관련됩니다.
Robert Koritnik 2010 년

179

도 있습니다 Request.IsAjaxRequestMVC의 당신이 사용하는 경우 이후 버전. 더 이상 버전 1이 없어서 버전 1인지 말할 수 없습니다.

Global.asax.cs에서이 확인이 필요한 경우 다음을 시도하십시오. new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted Global.asax.cs에서이 확인이 필요하므로 도움이되지 않습니다
Omu

2
@BuildStarted는 Application_Error에서 사용할 수 없습니다
Omu

1
그래, 당신 말이 맞아. MVC 외부에 있고 HttpRequestBase. 그럴 필요가 없었기 때문에 너무 깊게 보지 않았습니다. 알림 주셔서 감사합니다.
빌드 시작됨

20
new HttpRequestWrapper (요청) .IsAjaxRequest ();

1
BTW : 사용자 지정 권한 필터 내부에있는 경우 다음을 사용하여 요청에서 IsAjaxRequest 메서드를 가져옵니다. filterContext.HttpContext.Request.IsAjaxRequest
user1068352

51

ASP.NET MVC 3에서 나를 위해 작동합니다.

if (Request.IsAjaxRequest())
{
     // ajax request handled
}

1
이렇게함으로써 Application_Error에서 사용할 수 없습니다
ajbeaven

1
이 Application_BeginRequest에서 사용할 수 없습니다
Varadha31590

Global.asax :new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.