获取WebView发送给服务端的Accept-Language请求头
1,WebView没有提供获取Accept-Language请求头的接口
2,WebView的 public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {} 回调中WebResourceRequest 不包含Accept-Language请求头,即使客户端向服务器端发送的请求中包含该请求头
3,javascript的XMLHttpRequest和fetch均不提供获取请求头的方法,只提供了获取ResponseHeader的方法
4,看来只能通过三方接口获取发送的请求头了,目前免费获取request headers的三方接口包括:
https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending
https://iplocation.io/ajax_files/http_browser_request_headers.php
https://websniffer.com/my
https://headers.4tools.net/
http://www.xhaus.com/headers
其中第二个接口直接返回的是json,直接解析json就行了,其他几个接口返回的是HTML,需要解析HTML
5,通过搜索chromium的源代码,找到了根据语言列表来获取Accept-Language请求头的算法:
https://groups.google.com/a/chromium.org/g/chromium-dev/c/75Z3-STv710
https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/net/profile_network_context_service.cc;l=386;drc=ce3e1a317acedbbdb11b08da5aa7cbcab92efd3a
其中语言列表可以根据navigator.languages来获取