사이트가 HTTPS이지만 ERR_CLEARTEXT_NOT_PERMITED를 표시하는 웹 보기
나는 안드로이드에서 앱 작업을 시작하기 때문에 가진 것이 많지 않습니다.제가 가지고 있는 것은 지금까지 웹 뷰뿐입니다.저는 안드로이드 스튜디오에서 프로젝트를 만들었고, 제 프로젝트는 안드로이드 인스턴트 앱으로 설정되었습니다.이유/방법은 잘 모르겠지만 프로젝트를 만들 때 옵션을 간과한 것 같습니다.
WebView에서 net::라는 오류가 발생했습니다.ERR_CLEARTEXT_NOT_PERMITED입니다.오류를 검색해보니 앱이 InstantApp일 때 WebViews는 HTTPS 사이트만 로드할 수 있고 HTTP 사이트는 로드할 수 없습니다.
이 앱의 목적은 단 하나의 사이트만을 위한 매우 단순한 플래시 플레이어가 되는 것입니다.이는 플래시가 필요한 게임을 실행하는 데 더 나은 성능을 제공하기 위한 것입니다.이 게임은 HTTPS인 darkorbit.com 에 있습니다.
기본 활동.java:
package com.tylerr147.darkorbit;
import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView wv = findViewById(R.id.webView1);
wv.loadUrl("https://darkorbit.com/");
wv.setWebViewClient(new CustomWebViewClient());
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginState(WebSettings.PluginState.ON);
}
}
및 CustomWebViewClient.java를 입력합니다.
package com.tylerr147.darkorbit;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
내 질문:인스턴트 앱으로 앱을 비활성화하거나 웹 뷰에서 사이트를 표시하려면 어떻게 해야 합니까?
몇 가지 다른 세부 사항도 언급하는 것이 중요하다고 생각합니다.웹 뷰를 보여주는 앱에서 다음과 같은 이유로 "http://darkorbit.com/ 의 웹 페이지"를 로드할 수 없다고 표시됩니다. net::ERR_CLEARTEXT_NOT_PERMITED
URL 문자열이 하드 코딩되어 있고 "https://darkorbit.com/ "으로 표시되어 있지만 "...site at http://darkorbit.com/ ..."이 아니라 "...site at https://darkorbit.com/ ..."로 표시되어 있습니다.또한 안드로이드 9를 실행하는 구글 픽셀 2로 설정된 에뮬레이터에서 앱을 테스트하고 있습니다.
어떤 도움이라도 주시면 감사하겠습니다.감사해요.
솔루션:
다음 행을 추가합니다.application
태그:
android:usesCleartextTraffic="true"
아래와 같이:
<application
....
android:usesCleartextTraffic="true"
....>
업데이트: 다음과 같은 네트워크 보안 구성이 있는 경우:android:networkSecurityConfig="@xml/network_security_config"
없음 위와 같이 일반 텍스트 트래픽을 true로 설정할 필요가 없으며, 대신 아래 코드를 사용합니다.
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
....
....
</domain-config>
<base-config cleartextTrafficPermitted="false"/>
</network-security-config>
설정cleartextTrafficPermitted
로.true
"https://darkorbit.com/ "을 호출하면 서버에서 "www"가 누락된 것으로 인식되어 호출을 "http://www.darkorbit.com/ "로 리디렉션한 다음 "https://www.darkorbit.com/ "로 리디렉션하면 WebView 호출이 "잘못된" 호출이므로 첫 번째 리디렉션에서 차단됩니다.대신 "https://www.darkorbit.com/ "에 전화하면 문제가 해결됩니다.
언급URL : https://stackoverflow.com/questions/52707918/webview-showing-err-cleartext-not-permitted-although-site-is-https
'programing' 카테고리의 다른 글
개체 배열에서 개체 속성 수정 (0) | 2023.08.21 |
---|---|
UIButton 제목/텍스트를 프로그래밍 방식으로 업데이트할 수 있습니까? (0) | 2023.08.21 |
문자열에서 영숫자가 아닌 문자(공백 포함)를 제거하려면 어떻게 해야 합니까? (0) | 2023.08.21 |
파워셸에서 속성 파일 읽기 (0) | 2023.08.21 |
java.sql.SQL 예외:잘못된 열 이름 (0) | 2023.08.21 |