android - 上传到 TLS 环境时使用 Cordova 的 FileTransfer API 时出错

标签 android cordova ssl cordova-plugins

当我尝试使用 Cordova 的 FileTransfer API 上传图像时,adb logcat(在 Android 上测试)出现以下错误。服务器正在使用 TLS v1.2。

D/FileTransfer(26152): chunkedMode: true
D/FileTransfer(26152): headers: null
D/FileTransfer(26152): objectId: 5
D/FileTransfer(26152): httpMethod: POST
D/FileTransfer(26152): Content Length: 10467
W/FileTransfer(26152): Error getting HTTP status code from connection.
W/FileTransfer(26152): javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7c1a8ae0: Failure in SSL library, usually a protocol error
W/FileTransfer(26152): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x7278bd74:0x00000000)
W/FileTransfer(26152):  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448)
W/FileTransfer(26152):  at com.squareup.okhttp.Connection.upgradeToTls(Connection.java:140)
W/FileTransfer(26152):  at com.squareup.okhttp.Connection.connect(Connection.java:105)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:350)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:90)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)
W/FileTransfer(26152):  at org.apache.cordova.filetransfer.FileTransfer$1.run(FileTransfer.java:382)
W/FileTransfer(26152):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/FileTransfer(26152):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/FileTransfer(26152):  at java.lang.Thread.run(Thread.java:841)
W/FileTransfer(26152): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7c1a8ae0: Failure in SSL library, usually a protocol error
W/FileTransfer(26152): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x7278bd74:0x00000000)
W/FileTransfer(26152):  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
W/FileTransfer(26152):  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:405)

最佳答案

似乎必须为默认的 HTTPS 端口 443 设置 SSL 证书,并且该域必须可以在没有指定任何资源的情况下访问(https://example.com 必须可以访问,而不是只是一些 https://example.com/some-resource)。

关于android - 上传到 TLS 环境时使用 Cordova 的 FileTransfer API 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386169/

相关文章:

android - Crosswalk 无法解析配置 ':_armv7DebugCompile' 的所有依赖项

javascript - 在phonegap和inappbrowser之间共享数据

php - 相同的 cURL 脚本可以在 dev 中运行。不明白为什么没有投入生产

wcf - 自承载 WCF 数据服务上的 Kerberos 身份验证

javascript - QR码应用程序。静态 URL 对蜘蛛有点抵抗力?

java - RxJava 和 Retrofit - 链式服务响应

android - 尝试在 Android 设备上运行 Cordova 应用程序时出错

docker - 使用 Cloudflare 设置 Traefik

android - 每天在应用未打开时运行代码

java - 从 Http Post 接收 UTF-8 响应