【问题标题】:React Native Fetch on Android will not pass optionsAndroid 上的 React Native Fetch 不会传递选项
【发布时间】:2018-09-17 15:09:38
【问题描述】:

当它在 iOS 上运行良好时,我似乎无法让 Android 传递任何选项。它似乎转到端点并删除方法、标头和正文。我不确定,因为当我添加下面提到的一些代码进行调试时,它可以工作。

let data = JSON.stringify({
    appKeyLookup: CONSTANTS.APP_KEY_LOOKUP,
    username: username,
    password: password,
});
try {
    let response = await fetch(CONSTANTS.API_URL + 'login/', {
        method: 'POST',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
            'Cache-Control': 'no-cache',
        },
        body: data,
    });
    let responseJSON = await response.json();

真正奇怪的是,如果我添加

const _XHR = GLOBAL.originalXMLHttpRequest ?  GLOBAL.originalXMLHttpRequest : GLOBAL.XMLHttpRequest            
XMLHttpRequest = _XHR

到入口点然后安装chrome扩展Allow-Control-Allow-Origin:*

它工作正常。所以它似乎与CORS有关,但我不确定。

我正在使用 React Native 0.56.0

【问题讨论】:

  • 这个项目与我过去的另一个区别是我使用的是 VSCode + React Native Tools。但是,要启动 Android 版本,我是通过 Android Studio 进行的,并在终端中运行 react-native start。
  • 在 0.57.7 上仍然存在此问题。看来我实际上并不需要 CORS 扩展,但需要确保添加 _XHR 代码并启用远程 JS 调试。

标签: android react-native fetch


【解决方案1】:

所以我终于想通了。 Android 将 'charset=utf-8' 附加到 Content-Type。使其成为“内容类型:”应用程序/json;字符集=utf-8'。这导致我正在使用的 API 出现问题。当我认为它是在剥离身体时,我完全错了。

我从React-Native appends "charset=utf-8" to HTTP call Content-Type 中发现了这一点,这导致我进行了两个不同的修复。

Java Fix

或者

JavaScript Fix

【讨论】:

    猜你喜欢
    • 2018-11-24
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2021-12-29
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多