Android4.4系统上WebView传递Referer失效的问题

问题描述:

在使用WebView请求目标地址时,服务器要求带Refer字段,于是通过WebView提供的loadUrl(String url, Map<String,String> additionalHttpHeader)方法来实现,代码如下:

Map<String, String> extraHeaders = new HashMap<>();
String referer = "http://xxxx.com"
extraHeaders.put("Referer", referer);
view.loadUrl(payinfo.getWebUrl(), extraHeaders);

在很多手机上运行正常,但是在4.4的手机上出现请求被服务端拒绝的情况,分析后发现是4.4手机上请求头里添加的Referer字段丢失了。

解决办法

没想到好的解决办法,Google了一下,发现一个韩国网站上有人遇到过这个问题并分享了解决方法,原贴如下:传送门,代码如下:

Map<String, String> extraHeaders = new HashMap<>();
String referer = "http://xxxx.com"
if (("4.4.3".equals(android.os.Build.VERSION.RELEASE))
                || ("4.4.4".equals(android.os.Build.VERSION.RELEASE))) {          
    extraHeaders.put("Referer ", referer);
} else {
    extraHeaders.put("Referer", referer);
}
extraHeaders.put("Referer", referer);
view.loadUrl(payinfo.getWebUrl(), extraHeaders);

注:发现了吗,就是在Referer字段后面加了一个空格。:)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容