javascript - 从服务器,如何识别 javascript fetch() 调用(asp.net mvc)

标签 javascript asp.net-mvc fetch-api

这并不完全重复;下面提供的答案与建议的重复答案中的评论相同。

从 asp.net Controller 操作内部,我有兴趣了解该调用是否是由 javascript fetch() 调用进行的。我可以询问 Request 对象的任何部分来发现这一点吗?

例如,如果我有兴趣知道调用者是否是 javascript $.ajax 调用,我可以在服务器端调用此方法:

Request.IsAjaxRequest();

如果它返回 true,我就知道调用是这样的:

       $.ajax({
        url: '/MyDomain/MyControllerAction',
        type: 'GET',
        success: function (data) {
            doSomething(data);
        },
        error: function (XMLHttpRequest, ajaxOptions, ex) {
            doSomethingElse(XMLHttpRequest, ajaxOptions, ex);
    });

是否有类似 Request.IsAjaxRequest() 的东西,我可以调用或询问以发现调用者是否是 javascript fetch(),例如这样的调用:

fetch('/MyDomain/MyControllerAction')
       .then(function (data) {
          if(data.ok){
            return data.json();
           }
        })
        .then(function (data) {
            doSomething(data)
        })
        .catch(function (error) {
            doSomethingElseAgain(error);
        });

最佳答案

来自this answer , IsAjaxRequest 检查由 $.ajax 设置的特定 HTTP header 。要使 IsAjaxRequestfetch 返回 true,请在发出请求时设置此 header ,如下所示:

fetch('/MyDomain/MyControllerAction', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })

参见MDN了解获取选项的完整列表。

关于javascript - 从服务器,如何识别 javascript fetch() 调用(asp.net mvc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55051359/

相关文章:

javascript - 实现 "this page is asking you to confirm that you want to leave"

javascript - 展开菜单在 slideToggle() 之后向右移动

C# MVC 4 ControllerName 属性

c# - 防止 ASP.NET Web API 路由引擎扣除自定义方法名称

c# - 将枚举传递给强类型部分 View

javascript - 获取 JavaScript promise 值

javascript - Plotly.js 痕迹未显示

javascript - 如何使用 ES6 将 javascript 函数导入 Polymer 1.0 组件?

javascript - 如何在获取 api 中处理 HTTP 代码 4xx 响应

javascript - 获取无法从服务器获得响应