gpt4 book ai didi

android - 在 SSL 环境中使用 Cordova 文件传输上传文件时出错

转载 作者:行者123 更新时间:2023-11-29 20:57:40 25 4
gpt4 key购买 nike

当 Worklight Development Server 在 HTTPS 中运行时,我在尝试使用 Cordova 文件传输 API 上传文件时遇到问题。

我使用有效的 CA 创建了一个证书并将其放入服务器,并将其导入到 Android 模拟器。

我可以使用文件传输 API 登录到应用程序并下载数据,但是当我尝试使用它上传数据时,我在 LogCat 中收到以下消息。

代码正在调用使用我们的 WL 应用程序实现的 servlet 来执行下载和上传。

11-26 09:20:27.854: E/FileTransfer(2362): {"target":"https:\/\/my-ip-address\/APP\/appServlet","source":"file:\/\/\/storage\/sdcard\/anywhere\/wilson\/app2\/it_1305\/1416946570255.jpg","http_status":0,"code":3}
11-26 09:20:27.854: E/FileTransfer(2362): java.io.IOException: Hostname 'my-ip-address' was not verified
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.Connection.upgradeToTls(Connection.java:146)
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.Connection.connect(Connection.java:106)
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:287)
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:248)
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:197)
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:383)
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
11-26 09:20:27.854: E/FileTransfer(2362): at com.squareup.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:179)
11-26 09:20:27.854: E/FileTransfer(2362): at org.apache.cordova.filetransfer.FileTransfer$1.run(FileTransfer.java:388)
11-26 09:20:27.854: E/FileTransfer(2362): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-26 09:20:27.854: E/FileTransfer(2362): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-26 09:20:27.854: E/FileTransfer(2362): at java.lang.Thread.run(Thread.java:841)
11-26 09:20:27.854: E/FileTransfer(2362): Failed after uploading 0 of 18725 bytes.

最佳答案

该错误意味着您没有使用服务器的主机名作为证书的 CN。 Android 验证 CN(通用名称)是否与主机名匹配,否则证书无效,因为它可能是任何其他服务器使用您的证书来假装他们是您 (more information about this here) .

如果您的服务器没有主机名(如 hostname.com),只有 IP 地址,您必须在主题备用名称 (SAN) 中指定 IP 作为证书扩展的一部分。引用this answer on how to add it as an extension.具体过程取决于您用于生成证书的工具。

更多详细信息,look here at the android documentation on how to deal with HTTPS and SSL.特别是,他们有一个部分解释了如何处理您遇到的问题,标题为“主机名验证的常见问题”。

关于android - 在 SSL 环境中使用 Cordova 文件传输上传文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27152756/

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