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

Posted

技术标签:

【中文标题】获取参数在 Edge 14 上不起作用的 API【英文标题】:Fetch API with parameters not working on Edge 14 【发布时间】:2017-07-12 19:27:14 【问题描述】:

我在我的应用程序中使用fetch 来处理请求,the polyfill 用于不支持它的浏览器。到现在为止我从来没有遇到过问题(该应用可以在 Edge 13、IE 等上运行)。

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

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

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

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

【问题讨论】:

【参考方案1】:

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

所以我只是先检查该方法,如果它是 GET,我将不再添加主体。这解决了我的问题

【讨论】:

【参考方案2】:

其他对此感到困惑的人:

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

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

【讨论】:

嗯,这不是这里的问题。问题是某些版本的 Edge (14-17) 不允许将主体设置为参数。这包括null。如果您将其设置为undefined 或根本不工作。此外,这是一个生产网站,必须支持各种平台和用户,你不能只告诉用户更新 我知道这不是最好的解决方案,但微软的官方建议是告诉用户升级。刚刚添加了这个答案,因为它解决了我的问题并且可以帮助其他人。

以上是关于获取参数在 Edge 14 上不起作用的 API的主要内容,如果未能解决你的问题,请参考以下文章

水平 scrollLeft 在 IE 和 Edge 上不起作用?

api连接能否在生产反应本机上不起作用

位置的 getSpeed() 在 WiFi 上不起作用

SKStoreReviewController requestReview 在 iOS 14 上不起作用

突然,Probit 在 PySAL (1.14.4) 上不起作用

addUIInterruptionMonitor() 在运行 iOS 14.0.1 的设备上不起作用