앱내 Webview에서 HTTPS 처리 이슈
개발/안드로이드 2017. 8. 9. 08:57HTTPS 페이지내 이미지가 안나오는 현상
앱에서 Webview를 사용하여 컨텐츠를 보여주는 주는데 HTTPS로된 페이지 내에서 이미지가 표시가 안되는 현상이 있었습니다.
logcat 에서는 "This request has been blocked; the content must be served over HTTPS"라고 남고 있었습니다.
그래서 해결방안을 구글링 해보니 아래와 같이 하라는 정보를 발견하였습니다.!!
WebSettings wsetting = m_webView.getSettings();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{// https 이미지.
wsetting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
적용해보니 이미지가 정상적으로 나옵니다.
안드로이드 5.0 변경 사항에 보면 이렇게 적혀 있습니다.
WebView |
Android 5.0은 앱의 기본 동작을 변경합니다.
|
요약하면 혼합 콘텐츠와 타사 쿠키를 차단한다고 합니다.
이미지가 Block 되어 안나오는 현상은 혼합 콘텐츠와 연관이 있었던 겁니다.
HTTPS 페이지내에서 이미지 등 모든 것을 HTTPS 주소를 사용해야 하지만, 이미지 주소가 HTTP로 사용되어 Block된 것이였습니다.
혼합된 콘텐츠의 자세한 사항은 아래 주소에서 확인하세요.
https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
onReceivedSslError 보안 알림 해제 방법
다음은 안드로이드 앱 등록할때 보안알림에 관해 설명하도록 하겠습니다.
onReceivedSslError 보안 이슈로 많이 알려져 있습니다.
아래와 같이 추가 시 보안이슈를 해결 할 수 있습니다.
m_webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error)
{
//super.onReceivedSslError(view, handler, error);
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.sharedActivity().getContext());
builder.setMessage("이 사이트의 보안 인증서는 신뢰할 수 없습니다.");
builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
}
});
final AlertDialog dialog = builder.create();
dialog.show();
});
보안알림이 발생될 경우 앱이 등록이 되지않습니다. Webview를 사용하고 있는 곳에 전부 넣어야 보안 알림이 뜨지 않고 정상적으로 앱을 등록할 수 있습니다.
저도 이걸몰라 몇번이나 등록을 하면서 고생 한적이 있습니다.
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드 Java String 문자열 다루기 정리 (0) | 2017.09.18 |
---|---|
ListView Custom 기본코드 (0) | 2017.09.15 |
안드로이드,아이폰에서 euc-kr 한글을 utf-8 변환 (euc-kr -> utf-8) (0) | 2017.09.07 |
Dialog 팝업창 종류 및 커스텀 Dialog 팝업창 (0) | 2017.09.05 |
안드로이드 String 메모리 보안이슈 해결하기 (메모리 취약점) #1 (0) | 2017.08.06 |
안드로이드 6.0 (Marshmallow) 권한 획득하기! (1) | 2017.08.04 |
모바일웹 - 앱내 webview를 이용하여 확대/축소 하기 (0) | 2017.08.02 |
HTTP download (http 파일 다운로드 하기) (0) | 2017.07.27 |