programing

사이트가 HTTPS이지만 ERR_CLEARTEXT_NOT_PERMITED를 표시하는 웹 보기

padding 2023. 8. 21. 20:57
반응형

사이트가 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

반응형