带有重定向到自定义 url 方案的 iOS React Native fetch 失败,并显示“网络请求失败”错误

问题描述

在我当前的 React Native 项目中,我们在 oidc 之上构建了身份验证流程。 它在执行用户身份验证时使用多个重定向。 这些重定向是针对其中包含一些身份验证数据的 url 进行的。 这是一些存根示例:

fetch('https://my-auth-server.domain/address') -> 302 ('myappid://action?user=data') 

如您所见,服务器将初始请求重定向自定义 url 方案。还有一个问题: (我想)由于这个自定义 url 方案,我没有收到响应,但只有“不支持的 URL”XHR 错误。没有标题,我可以从中解析重定向位置,什么都没有。只是这个错误文本。

是否真的可以通过 React Native fetch / XHR 处理自定义 url 方案重定向

环境:

  • React Native 0.64
  • iOS 12.1-14.4
  • React 导航 v4
  • XCode 12.5

我已经做过的:

  • 我在应用中设置了深层链接并设置了 URL Schemes。
  • 我已将 Allow Arbitrary Loads 设置为 true 并配置了域。
  • 我尝试使用纯 XHR 请求、axios、fetch - 结果始终相同。
  • 在模拟器的 Safari 和桌面浏览器中,初始 url 可以正常打开。
  • React Flipper 还显示了来自此请求的所有数据的响应! (状态:302,所有标头都已就位等)

也没有办法拦截这个重定向,因为 React Native 的 fetch 不支持 { redirect: "manual" } 选项。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)