fetch() 在 react-native (iOS) 上做 GET 而不是 POST
Posted
技术标签:
【中文标题】fetch() 在 react-native (iOS) 上做 GET 而不是 POST【英文标题】:fetch() doing GET instead of POST on react-native (iOS) 【发布时间】:2016-08-11 15:58:56 【问题描述】:我的组件中有以下代码:
fetch('https://domain.com/api',
method: 'POST',
headers: 'Accept': 'application/json', 'Content-Type': 'application/json',
body: JSON.stringify(
key: 'value'
)
).
then((response) =>
console.log('Done', response);
);
并且每次请求都是 GET(检查服务器日志)。我认为这与CORS
(但react-native
中显然没有这样的事情)和ATS(但默认情况下已经关闭,加上我的域是HTTPS)有关。我已经从浏览器和curl
尝试过,它运行良好,所以服务器配置先验没有问题。知道这里发生了什么吗?
我使用的是最新的react-native
版本。
【问题讨论】:
hmm,您是否使用 GET 而不是 POST 进行了一些测试?也许手机中的代码还没有用'post'更新 对我来说,它与'post'
一起使用,小写
GET 当然可以,但它是资源的创建,所以 POST 是我需要的。我也尝试过小写,没有任何效果。我没有提到它,但我在模拟器上遇到了这个问题
【参考方案1】:
经过进一步挖掘,这绝对是 API + fetch
的问题。我在 URL 的末尾缺少一个斜杠,API 发出了 301,fetch
没有正确处理。所以我不知道 fetch 函数(和底层机制)是否有什么需要修复的,但这解决了我的问题 :)
【讨论】:
这也发生在我身上,但真正奇怪的是它只发生在我的应用程序部署到实体手机的“发布”版本中。调试版本每次都会正确发布。在路由中添加尾随“/”为我解决了这个问题。感谢您的帮助!【参考方案2】:当一个 POST 被重定向(在我的例子中是从 http 到 https)它被转换成一个 GET。 (不知道为什么……)
【讨论】:
以上是关于fetch() 在 react-native (iOS) 上做 GET 而不是 POST的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有 Jest 的 react-native 中使用模拟的 fetch() 对 API 调用进行单元测试
react-native android fetch json停止工作
在React-Native中,使用fetch时,cookie问题。