2015-12-29 2 views
1

Я добавление пользовательских заголовков на запросы всех WebView, позвонив:Отсутствующие пользовательские заголовки в WebView»GoBack() запрашивает

webview.loadUrl(url, myHeaders) 

и перегрузки WebView клиента:

shouldOverrideUrlLoading() 

При просмотре и углубляясь -связывание, все запросы имеют настраиваемые заголовки, но все запросы goBack() от webview этого не делают. shouldOverrideUrlLoading() не вызывается, когда вызывается goBack().

Мне интересно, как обеспечить, чтобы пользовательские заголовки всегда включались в goBack() запросов?

ответ

0

Обычно WebView повторно отправляет дополнительные заголовки при возвращении в историю навигации, я кратко протестировал это и, похоже, сработал. Однако, есть несколько моментов, которые могут сбивать с толку, так что я бы посоветовал повторно проверить, что на самом деле происходит в вашем сценарии:

  1. WebView не может даже повторно обратиться к серверу, чтобы загрузить страницу, если вы вызываете goBack() - он может просто восстановить страницу из кеша. Для принудительного повторного запроса страницы с сервера последний должен отключить кеширование страницы с помощью заголовка cache-control: cache-control: no-cache,no-store. И в этом случае, если страница была загружена через loadUrl с дополнительными заголовками, эти заголовки будут повторно отправлены.

  2. Если пользователь нажимает ссылку на странице, загруженной дополнительными заголовками, эти заголовки не наследуются на странице, на которую вы переходите (это верно для навигаций, выполняемых JS-кодом). Таким образом, если вы вызываете goBack, и предыдущая страница была загружена из щелчка пользователя, у нее не будет никаких дополнительных заголовков начальной страницы, загруженной через loadUrl.

  3. shouldOverrideUrlLoading вызываются только для нагрузок, вызванных пользователя или сервера действий, а не для нагрузок, инициированных с помощью WebView методов API, как loadUrl или goBack, потому что приложение уже знает, что он собирается перейти WebView где-то. Например, если вы загружаете google.com через loadUrl, оригинальная навигация не будет перехвачена shouldOverrideUrlLoading, но перенаправление, которое делает сервер, например. на странице https, будет.

Надеюсь, это поможет. Если вы все еще подозреваете, что WebView не пересылает дополнительные заголовки, я настоятельно рекомендую подготовить простой пример воспроизведения, который продемонстрировал бы его.

Смежные вопросы