为什么Android应用程序需要Android:UseClearTextTraffic=";“真的”;如果我指向一个https站点?

为什么Android应用程序需要Android:UseClearTextTraffic=";“真的”;如果我指向一个https站点?,android,http,https,apache2,Android,Http,Https,Apache2,我有一个基本的应用程序,它只使用webview来显示我创建的网站。网站链接是https,但当我运行应用程序时,我会看到一个完全空白的屏幕。没有关于明文的错误是不允许的,只是完全是白色的。如果我将android:usesCleartextTraffic=“true”添加到AndroidManifest.xml文件中,那么它将正确显示我的网站 该网站位于一台自带Ubuntu服务器18.04和apache2的主机上。我有一个适当的域和SSL证书,可以清楚地看到浏览器中的安全连接。甚至所有端口80的流量

我有一个基本的应用程序,它只使用webview来显示我创建的网站。网站链接是https,但当我运行应用程序时,我会看到一个完全空白的屏幕。没有关于明文的错误是不允许的,只是完全是白色的。如果我将android:usesCleartextTraffic=“true”添加到AndroidManifest.xml文件中,那么它将正确显示我的网站

该网站位于一台自带Ubuntu服务器18.04和apache2的主机上。我有一个适当的域和SSL证书,可以清楚地看到浏览器中的安全连接。甚至所有端口80的流量都重定向到端口443

如果我在另一个网站,如它的作品。很明显,我的服务器配置中有一些安卓认为是明文的东西

我错过了什么?我宁愿确保一切都是安全的

以下是没有明文异常的AndroidManifest.xml。这适用于谷歌、ebay等。。但不是我自己的网站

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.medicinetracking">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application

        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MedicineTracking">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
以下是我的apache2配置:

<VirtualHost *:80>
        ServerName mywebsite.com
        Redirect permanent "/" "https://mywebsite.com/"

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:443>

        ServerAdmin webmaster@mywebsite.com
        DocumentRoot /var/www/html

        SSLEngine on
        SSLCertificateFile /etc/apache2/certificate/mywebsite_com.crt
        SSLCertificateKeyFile /etc/apache2/certificate/mywebsite.key
        <IfModule mod_speling.c>
            CheckCaseOnly on
            CheckSpelling on
        </IfModule>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/html/medicineTracking>
  Header Set Pragma "no-cache"
  Header Set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
  Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
  Header Unset ETag
  FileETag None
</Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

服务器名mywebsite.com
重定向永久“/”https://mywebsite.com/"
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
服务器管理员webmaster@mywebsite.com
DocumentRoot/var/www/html
斯伦金安
SSLCertificateFile/etc/apache2/certificate/mywebsite\u com.crt
SSLCertificateKeyFile/etc/apache2/certificate/mywebsite.key
只检查箱子
拼写检查
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
标题集Pragma“无缓存”
标题集过期“1970年1月1日星期四00:00:00 GMT”
标题集缓存控制“最大年龄=0,无存储,无缓存,必须重新验证”
标题未设置ETag
FileTag无
#vim:syntax=apachets=4sw=4sts=4srnoet
    package com.example.medicinetracking;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = findViewById(R.id.webview);
        myWebView.setWebViewClient(new WebViewClient());
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.getSettings().setDomStorageEnabled(true);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.loadUrl("https://mywebsite.com/directory");

        myWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                //Required functionality here
                return super.onJsAlert(view, url, message, result);
            }
        });
    }
}
<VirtualHost *:80>
        ServerName mywebsite.com
        Redirect permanent "/" "https://mywebsite.com/"

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:443>

        ServerAdmin webmaster@mywebsite.com
        DocumentRoot /var/www/html

        SSLEngine on
        SSLCertificateFile /etc/apache2/certificate/mywebsite_com.crt
        SSLCertificateKeyFile /etc/apache2/certificate/mywebsite.key
        <IfModule mod_speling.c>
            CheckCaseOnly on
            CheckSpelling on
        </IfModule>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/html/medicineTracking>
  Header Set Pragma "no-cache"
  Header Set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
  Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
  Header Unset ETag
  FileETag None
</Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet