我在WebView中使用HTML5离线缓存,我尝试加载的资源位于基于用户代理检查服务于不同版本的webServer上。
我可以通过指定User-Agent来加载所需版本的网站URL:
webView.getSettings().setUserAgentString(userAgent);
但似乎此设置不适用于为应用程序缓存资源检索发送的请求。
是否有任何方法可以修改为应用程序缓存发送的请求?或者至少为WebView发送的所有请求设置User-Agent标头?
感谢您的帮助。
答案 0 :(得分:0)
如果您有权访问服务器,则可以使用该会话存储用户代理并在下次请求中使用它。 我们的想法是第一个请求将包含正确的用户代理,但我们无法信任下一个请求,因为其中至少有一个将来自Application Cache并将包含不同的用户代理。 因此,解决方法(如果您有权访问服务器)是:
这是一段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;
}