是否可以修改WebView for HTML Offline Caching发送的请求

时间:2014-03-26 18:49:31

标签: android android-webview html5-appcache offline-mode

我在WebView中使用HTML5离线缓存,我尝试加载的资源位于基于用户代理检查服务于不同版本的webServer上。

我可以通过指定User-Agent来加载所需版本的网站URL: webView.getSettings().setUserAgentString(userAgent);

但似乎此设置不适用于为应用程序缓存资源检索发送的请求。

是否有任何方法可以修改为应用程序缓存发送的请求?或者至少为WebView发送的所有请求设置User-Agent标头?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您有权访问服务器,则可以使用该会话存储用户代理并在下次请求中使用它。 我们的想法是第一个请求将包含正确的用户代理,但我们无法信任下一个请求,因为其中至少有一个将来自Application Cache并将包含不同的用户代理。 因此,解决方法(如果您有权访问服务器)是:

  1. 在首次访问期间将用户代理保存到会话中。
  2. 在下次所有请求中使用您保存到会话中的用户代理。
  3. 这是一段PHP代码,说明了这一点。

    // Get the user agent from the browser.
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    if (isset($_SESSION['_correctUserAgent'])) {
        // There is already a user agent in the session, so, use it.
        $userAgent = $_SESSION['_correctUserAgent'];
    } else {
        // There is no user agent in the session, so, save it for next requests.
        $_SESSION['_correctUserAgent'] = $userAgent;
    }