获取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来获取

posted @ 2023-05-05 14:00  m00219907  阅读(184)  评论(0编辑  收藏  举报