gpt4 book ai didi

javascript - 如果 ssl (https) 证书无效,React Native XMLHttpRequest 请求将失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:13 24 4
gpt4 key购买 nike

当我使用无效证书对 https 服务器执行 XMLHttpRequest 时,React Native 抛出异常“操作无法完成。(NSURLErrorDomain 错误 -1202。)”

是否可以禁用 React Native XMLHttpRequest 的 ssl 警告/检查?

最佳答案

免责声明:此解决方案应该是临时的并记录在案,这样它就不会停留在软件的生产阶段,这仅用于开发。

对于 iOS,您所要做的就是打开您的 xcode 项目(在 RN 中的 iOS 文件夹中),打开它后,转到 RCTNetwork.xcodeproj 并在该项目中导航到 RCTHTTPRequestHandler.m

在那个文件中你会看到这样一行:

 #pragma mark - NSURLSession delegate

在那行之后,添加这个函数

- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
{
completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
}

瞧,您现在可以在没有有效证书的情况下对您的 API 进行不安全的调用。

这应该足够了,但如果您仍然遇到问题,您可能需要转到项目的 info.plist,左键单击它并选择打开为...源代码。

最后加上

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

所以你的文件看起来像这样

    ...
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</plist>

对于真正的生产就绪解决方案,https://stackoverflow.com/a/36368360/5943130那个解决方案更好

关于javascript - 如果 ssl (https) 证书无效,React Native XMLHttpRequest 请求将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31249559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com