Android WebView не загружает URL SameSite = Нет - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь загрузить веб (например, www.google.com), но веб-просмотр направляет следующее сообщение в консоль:

Файл cookie, связанный с ресурсом на http://google.com/ было установлено с SameSite=None, но без Secure. В будущем выпуске Chrome будут использоваться файлы cookie, помеченные SameSite=None, только если они также помечены SecureВы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложение»> «Хранилище»> «Файлы cookie» и получить дополнительную информацию по адресу https://www.chromestatus.com/feature/5633521622188032.", source: https://www.google.com/

Я не знаю, как решить эту проблему. Я делаю следующий код для загрузки URL, как я могу это исправить?

private void initWebView(String url){

        webViewTvWeakReference = new WeakReference<>(new WebView(getActivity()));
        webViewTvWeakReference.get().setId(TV_WEB_VIEW_ID);
        webViewTvWeakReference.get().setLayerType(View.LAYER_TYPE_HARDWARE, new Paint());
        webViewTvWeakReference.get().setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        webViewTvWeakReference.get().setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.lightBlueBackgroundColor));
        webViewTvWeakReference.get().requestFocusFromTouch();

        setUpWebSettings(webViewTvWeakReference.get());

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            CookieManager.getInstance().removeAllCookies(null);
        }

        Map<String, String> headers = new HashMap<>();
        headers.put("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");

        if (BuildConfig.DEBUG) {
            webViewTvWeakReference.get().setWebViewClient(new WebViewClient() {
                @Override
                public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                    handler.proceed();
                }
            });
        }

        if(!url.isEmpty()){
            webViewTvWeakReference.get().loadUrl(url, headers);
        }else{
            webViewTvWeakReference.get().loadUrl("about:blank", headers);
        }

        webViewTvWeakReference.get().pauseTimers();     // WebView timers consumes a lot off CPU
        webViewTvWeakReference.get().resumeTimers();    // Pause and Resume timers fix this behaivour

    }

Я добавил следующую строку в заголовки, но все еще не работает.

headers.put("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");

Спасибо

1 Ответ

1 голос
/ 09 ноября 2019

Это предупреждение специально для файла cookie из google.com, поэтому вы не несете ответственности за установку его атрибутов. Команда Google должна применить соответствующий атрибут к своим cookie-файлам, чтобы устранить это предупреждение.

В случае, если у вас есть какие-либо cookie-файлы, которые необходимо отправить в контексте между сайтами / сторонними организациями, тогда их нужно установить с помощью:

Set-Cookie: foo=bar; SameSite=None; Secure

Однако на этом этапе это предупреждение должно быть чисто информационным. Файл cookie по-прежнему отправляется вместе с запросом, и вы не должны видеть никаких проблем с поведением сайта в WebView.

Эти новые ограничения станут настройками по умолчанию в Chrome 80, однако они не будут применяться кWebViews на данный момент.

Подробнее об этих предстоящих изменениях вы можете узнать на https://web.dev/samesite-cookies-explained.

Кроме того, вы можете проверить, реализует ли ваш конкретный браузер или WebView новое поведение, указав его наhttps://samesite -sandbox.glitch.me . Если эта матрица имеет зеленый цвет, значит ваш браузер реализует новые ограничения. Если на доске есть красный или оранжевый цвет, значит, ваш браузер не , но применяет новые значения по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...