获取参数在 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 上不起作用?
SKStoreReviewController requestReview 在 iOS 14 上不起作用