如何解决返回后 WebView 引用器 (HTTP_REFERER) 标头不起作用
我试图通过覆盖 A.PHP 的 shouldOverrideUrlLoading 来在 Android WebView 中定义 HTTP_REFERER:
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url) { // click link
Map<String,String> headers = new HashMap<>();
headers.put("Referer","http://192.168.1.103/ecity/A.PHP?idx_t=cpn"); // for PHP $_SERVER['HTTP_REFERER']
view.loadUrl(url,headers);
return true;
}
A.PHP 中有一个链接到 B.PHP。如果我从 A.PHP 直接转到 B.PHP,我可以在链接的 B.PHP 文件中检索此 $_SERVER['HTTP_REFERER'] 没有任何问题。但是当我单击其他链接并返回上一页时,此引用标题不再有效。例如在 A.PHP(点击链接)--> 进入 C.PHP(点击返回按钮)--> 回到 A.PHP(点击 B 链接)-> 进入 B.PHP;那么这次B.PHP没有定义$_SERVER['HTTP_REFERER']。
我尝试拦截请求如下。但这无济于事。
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,WebResourceRequest request) {
String url = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
url = request.getUrl().toString();
if (url.contains("A.PHP")) {
request.getRequestHeaders().put("Referer","http://192.168.1.103/ecity/A.PHP?idx_t=cpn");
}
}
return super.shouldInterceptRequest(view,request);
}
在 webView 设置中,我包含了这两行:
...
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.getSettings().setBlockNetworkLoads (false);
...
按下回退键时如何解决这个referer问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。