从服务器,如何识别进行了JavaScript fetch()调用(asp.net mvc)

时间:2019-03-07 19:22:34

标签: javascript asp.net-mvc fetch-api

这不是重复的;以下提供的答案与建议的重复答案中的评论相同。

从asp.net控制器动作内部,我想知道该调用是否由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);
        });

1 个答案:

答案 0 :(得分:3)

this answeronEdit()检查由IsAjaxRequest设置的特定HTTP标头。要使$.ajax返回IsAjaxRequest为真,请在发出请求时设置此标头,如下所示:

fetch

有关fetch('/MyDomain/MyControllerAction', { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) 选项的完整列表,请参见MDN