Android:在WebView中禁用X-Requested-With标头

Kin*_*gFu 15 android android-webview

我试图使我的WebView标题看起来像用户只是使用常规浏览器而不是使用WebView.从我可以收集的信息来看,除了WebView还发送包含应用程序包名称的X-Requested-With标头之外,标题是相同的.有没有办法阻止这种情况?

小智 7

您可以为 Android API > 11 执行此操作

public class AndroidMobileAppSampleActivity extends Activity {
Map<String, String> extraHeaders = new HashMap<String, String>();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
    // must define X-Requested-With, if header missing, then webview will
    //add your package name
    extraHeaders.put("X-Requested-With", "your presentation");
    WebSettings webSettings = mainWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mainWebView.setWebViewClient(new MyCustomWebViewClient());
    mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    mainWebView.loadUrl("http://www.somesite.com", extraHeaders);
}

private class MyCustomWebViewClient extends WebViewClient {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view,
         String url) {
        // TODO Here you must overwrite request  using your 
        // HttpClient Request
        // and pass it to new WebResourceResponse
        return new  WebResourceResponse(response.ContentType, response.ContentEncoding, responseStream);
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // Apply again your heades here 
        view.loadUrl(url, extraHeaders);
        return true;
    }
}
}
Run Code Online (Sandbox Code Playgroud)

  • 这意味着我们只能修改“X-Requested-With”标头的值。有什么办法可以彻底删除或丢弃它吗? (5认同)
  • 这只会修改此 url 请求中的值,从响应 html 开始的所有 js 和图像请求仍然具有 X-Requested-With 中的原始值 (5认同)