使用在 Edge 14 上不起作用的参数获取 API

Fetch API with parameters not working on Edge 14

我在我的请求应用程序中使用 fetch,对于不支持它的浏览器使用 the polyfill。直到现在我从未遇到过问题(该应用程序适用于 Edge 13、IE 等)。

更具体地说,在 Microsoft Edge 14 上存在 self.fetch,因此 polyfill 不适用。如果我用一个参数调用 fetch,例如 fetch('/api/users') 它可以工作,但是用 2 个参数调用它(我需要设置一些 headers、方法等)

fetch(request.url, {
    headers, 
    method: request.method || 'GET',
    body: request.body || null
})

没用。它甚至不拨打电话,不抛出错误,什么都没有。我已经在谷歌上搜索了一个小时,但到目前为止还没有运气。有什么想法吗?

显而易见的是对用户代理进行脏检查并使用 polyfill 覆盖本机函数,但我想要更多 "elegant"。也许我做错了什么。谢谢!

好的,所以我在 this post 的帮助下找到了答案。显然,当试图在 GET 请求上发送 body 参数时它崩溃了,即使它是空的或未定义的。

所以我只是先检查方法,如果是 GET,我就不再添加正文了。这解决了我的问题

其他遇到此问题的人:

检查您的 Edge 版本,17 不支持 Promises,使用 2018 年 10 月的更新升级 Windows,其中包括 Edge 18 并且支持 Promises,获取请求将有效。

https://www.microsoft.com/ja-jp/software-download/windows10