API get 请求失败,但 post、put、delete 工作

问题描述 投票:0回答:3

环境与设置:

  • 反应原生0.57
  • expressjs 服务器
  • 使用axios进行api请求
  • 设置超时10000ms
  • 请求是带有用户名和其他小信息的 json 数据
  • http 请求(不是 https)

我正在开发一个小型 React Native 项目,现在遇到了“api GET 请求”的问题。

对于 POST、PUT、DELETE 操作来说,这一切都是完美的,但只有 GET 请求会在服务器日志中返回超时错误:

“BadRequestError:请求被拒绝”。

相同的代码在 Android 上运行得很好,但它只发生在 iOS 上。

我已将

NSAllowsArbitraryLoads
设置为 true,也将
NSExceptionDomains
设置为以防万一,但他们都没有解决问题。

ios react-native express axios
3个回答
0
投票

最新的 iOS sdk 强制连接采用 https 协议而不是 http。

您可以在 Xcode 项目的 info.plist 文件中向您的域添加例外。

如果你想允许一切都写在里面info.plist

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
    <key>yourdomain.com</key>
    <dict>
        <!--Include to allow subdomains-->
        <key>NSIncludesSubdomains</key>
        <true/>
        <!--Include to allow HTTP requests-->
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <!--Include to specify minimum TLS version-->
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
    </dict>
 </dict>
</dict>

0
投票

步骤:

  1. 在 xcode 中打开您的项目。
  2. 右键单击info.plist
  3. 选择打开为源代码。
  4. </dict>
    标签末尾添加以下代码。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>


0
投票

好的,找到解决方案了。

这是因为发送“GET”请求时 body 上有一个空对象。 检查它是否为空并使其未定义解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.