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

问题描述 投票:0回答:1

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

从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);
        });
javascript asp.net-mvc fetch-api
1个回答
3
投票

this answerIsAjaxRequest检查由$.ajax设置的特定HTTP标头。当你提出请求时,让IsAjaxRequestfetchset返回true,如下所示:

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

有关MDN选项的完整列表,请参阅fetch

© www.soinside.com 2019 - 2024. All rights reserved.