为什么Android应用程序需要Android:UseClearTextTraffic=";“真的”;如果我指向一个https站点?
我有一个基本的应用程序,它只使用webview来显示我创建的网站。网站链接是https,但当我运行应用程序时,我会看到一个完全空白的屏幕。没有关于明文的错误是不允许的,只是完全是白色的。如果我将android:usesCleartextTraffic=“true”添加到AndroidManifest.xml文件中,那么它将正确显示我的网站 该网站位于一台自带Ubuntu服务器18.04和apache2的主机上。我有一个适当的域和SSL证书,可以清楚地看到浏览器中的安全连接。甚至所有端口80的流量都重定向到端口443 如果我在另一个网站,如它的作品。很明显,我的服务器配置中有一些安卓认为是明文的东西 我错过了什么?我宁愿确保一切都是安全的 以下是没有明文异常的AndroidManifest.xml。这适用于谷歌、ebay等。。但不是我自己的网站为什么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的流量
<?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