sourcecode

asp.net mvc: ajax를 사용하여 페이지 호출 시 탐지하는 방법

copyscript 2023. 9. 16. 09:49
반응형

asp.net mvc: ajax를 사용하여 페이지 호출 시 탐지하는 방법

asp.net mvc에서 ajax를 사용하여 페이지가 호출될 때 어떻게 감지합니까?

프로페셔널 ASP에 의하면.NET MVC 1.0 북, MVC AJAX 라이브러리는 "XMLHtpRequested-With" 값의 폼 필드를 삽입합니다.

그런 다음 시스템에서 확장 메서드를 사용할 수 있습니다.웹.Mvc는 단순히 전화를 걸 수 있다는 것을 의미합니다.Request.IsAjaxRequest()그리고 이것이 AJAX 요청이라면 간단한 참말이나 거짓말을 얻을 수 있습니다.

다음과 같이 수동으로 확인할 수 있습니다.

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

또는 ASP의 컨트롤러에 있을 때.시스템을 참조하는 NET MVC.Web.Mvc 다음과 같은 ActionMethod 내에서 액세스할 수 있는 HttpRequestBase 객체에 대한 확장 메서드를 얻을 수 있습니다.

bool isAjaxRequest = Request.IsAjaxRequest();

일반 http 통화이므로 javascript로 통화했는지 브라우저에서 직접 통화했는지 확인할 수 있는 방법은 없습니다.

다른 호출과 구별하기 위해 ajax 호출에 헤더를 추가하거나 ajax 호출에서만 사용되는 쿼리 문자열에 매개 변수를 추가할 수 있습니다.

ASP.NET MVC ajax는 이러한 헤더를 추가합니다.X-Requested-With: XMLHttpRequest, 이것은 mvc ajax 라이브러리에 의한 ajax 호출임을 스니핑하는 데 사용할 수 있습니다.그러나 jQuery 또는 자신의 핸드롤된 ajax 호출을 사용하는 경우에는 설정되지 않습니다.또한 다른 클라이언트가 이 헤더를 스푸핑(예: WebClient 사용)할 수 있으므로 이 헤더를 찾는 것이 ajax 호출이 이루어졌다는 보장은 아닙니다.

요청이 ajax 요청인지 확인하는 가장 좋은 방법은 확인하는 것입니다.Request.IsAjaxRequest(). 후드 아래에서 MVC 프레임워크는 Request Parameters OR Request Header에서 ajax request를 확인하는 것이 좋습니다.ASP의 코드입니다.순 MVC 소스 코드는 다음과 같습니다.

    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"));
    }

따라서 수동으로 확인하려면(권장되지 않음) 두 가지를 모두 확인해야 합니다.

AJAX 호출과 함께 매개 변수를 전달해야 합니다. AJAX는 GET 요청일 뿐이며 주소 표시줄에 url을 입력하고 Enter 키를 누르는 것과 다르지 않습니다(이것이 AJAX가 사이트 간 스크립팅 공격으로부터 보호되어야 하는 이유이며, 그렇지 않으면 공격자는 이미지에 url을 포함하는 것만으로 사용자의 사이트에 AJAX 명령을 실행하도록 강제할 수 있습니다).

그게 왜 중요합니까?그러면 안 됩니다.정말로 콘텐츠 협상을 하려고 하시는 건가요?

언급URL : https://stackoverflow.com/questions/2087021/asp-net-mvc-how-to-detect-when-a-page-is-called-using-ajax

반응형