当 Android 在 iOS 上运行良好时,我似乎无法让 Android 传递任何选项。它似乎转到端点并删除方法、 header 和正文。我不确定,因为当我添加下面提到的一些代码进行调试时,它起作用了。
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
最佳答案
所以我终于想通了。 Android 将“charset=utf-8”附加到 Content-Type。使其成为“Content-Type:”application/json;字符集=utf-8'。这导致我正在使用的 API 出现问题。当我认为它正在剥离 body 时,我完全错了。
我从 React-Native appends "charset=utf-8" to HTTP call Content-Type 中发现了这个这导致我进行了两种不同的修复。
或者
关于android - Android 上的 React Native Fetch 不会传递选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370804/