服务器如何检测使用 fetch API 发出的请求?

Posted

技术标签:

【中文标题】服务器如何检测使用 fetch API 发出的请求?【英文标题】:How does a server detect a request made with the fetch API? 【发布时间】:2016-12-24 02:35:10 【问题描述】:

我有一个 ASP.NET MVC 5 应用程序,它处理来自我的网站使用 fetch API 发出的请求。 当我的控制器中发生异常时,我使用从 System.Web.Mvc.Controller 覆盖的自定义“OnException”方法以 JSON 格式发送结果,其中包含有关错误的数据。我这样做是因为我不想发送默认的 html 错误页面。 在这个对所有控制器都是全局的方法中,我需要检查请求是否已使用 fetch API 执行(如果没有,我什么也不做)。

我该怎么做?

是否应该在我的请求中添加自定义 http 标头? 是否应该在所有请求中添加特定参数? 我的方法完全错误吗?

【问题讨论】:

【参考方案1】:

特定标头或特定参数都可以使用; “干净”的方法可能是将 fetch-sent 请求中的“Accept:”标头设置为“application/json”,表示所述请求正在寻找 JSON 响应,并在服务器端使用它来确定是发送 JSON 还是 HTML。

【讨论】:

【参考方案2】:

我认为 Accept Header 对所有情况都没有帮助。如果您请求 HTML 并且您有一个布局系统并且想要为异步请求禁用它,您将需要一种不同的方法。

我认为使用自定义标志头是一种更有保障的方法。

【讨论】:

以上是关于服务器如何检测使用 fetch API 发出的请求?的主要内容,如果未能解决你的问题,请参考以下文章

fetch(),如何发出非缓存请求?

错误:使用 Fetch API 向第三方 API 发出 GET 请求时出现“TypeError:无法获取”

如何在本地使用 fetch 从客户端向服务器发出请求而不会得到不透明的响应?

获取向 Rails 服务器发出请求的 API

如何使用 javascript fetch api 和 express multer 上传图像

Firebase 性能监控是不是捕获了 React Native Fetch API 发出的请求?