服务器如何检测使用 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 API 向第三方 API 发出 GET 请求时出现“TypeError:无法获取”
如何在本地使用 fetch 从客户端向服务器发出请求而不会得到不透明的响应?