问题描述
我试图通过覆盖 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 (将#修改为@)