首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# MVC检测是否XMLHttpRequest

C# MVC检测是否XMLHttpRequest
EN

Stack Overflow用户
提问于 2019-03-05 05:15:37
回答 1查看 1.4K关注 0票数 2

我已经在我的C#控制器中尝试了以下操作

使用了以下命名空间

代码语言:javascript
复制
 using System;
 using System.Web;
 using System.Web.Mvc;

以及IActionResult Create()方法中的以下“内容”

代码语言:javascript
复制
    // GET: Movies/Create
    public IActionResult Create()
    {
        Request.IsAjaxRequest(); // this line tells me "HttpRequest does not contain a defintion for IsAjaxRequest .. (are you missing a using directive?)"


        string method = HttpContext.Request.Method;
        string requestedWith = HttpContext.Request.Headers["X-Requested-With"];

        HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";

        new HttpRequestWrapper(System.Web.HttpContext.Current.Request).IsAjaxRequest()


        return View();
    }

他们都不适合我。我可以调试请求,但是我找不到任何东西来告诉我这是一个xhrXMLHttpRequest

我像这样调用控制器操作:

代码语言:javascript
复制
function reqListener () {
    console.log(this.responseText);
}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "https://localhost:5001/Movies/Create");
oReq.send();

浏览器开发工具告诉我这是一个XHR类型请求:

如何在C#控制器或.cshtml文件中检测XHR请求?

EN

回答 1

Stack Overflow用户

发布于 2019-03-05 07:32:36

您可以执行以下操作:

代码语言:javascript
复制
    // GET: Movies/Create
    public IActionResult Create()
    {
        string requestedWith = HttpContext.Current.Request.Headers["X-Requested-With"];

        if(requestedWith == "XMLHttpRequest")
        {
           // Do whatever you want when an AJAX request comes in here....
        }

        return View();
    }

请注意,在现实中,没有万无一失的方法来检测AJAX请求-- X-Requested-With头可以由开发人员或客户端库(如jQuery )随意发送。所以不能保证这个头会被发送,当然,除非你是使用这个服务的唯一客户端代码的开发者。对于服务器而言,AJAX请求与任何其他类型的请求没有什么区别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54991671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档