2013-07-24 1 views
13

Ich versuche, meine WebView-Header aussehen wie der Benutzer nur mit dem regulären Browser und nicht mit einem WebView. Von dem, was ich sammeln kann, sind die Header identisch, abgesehen davon, dass das WebView auch einen X-Requested-With-Header sendet, der den Namen des Apps-Pakets enthält. Gibt es eine Möglichkeit, dies zu verhindern?Android: Deaktivieren X-Requested-Mit Header In WebView

+1

+1 in der Regel x-requested-mit verwendet Ajax-Anforderung zu erkennen, Art Dinge von Schläuchen, wenn android den Header auf _every_ Anfrage, Ajax sendet oder nicht . – virtualeyes

+1

Das klingt viel wie http://stackoverflow.com/questions/7610790/add-custom-headers-to-webview-resource-requests-android – jlindenbaum

+0

@KingFu - konnten Sie X-Request-With-Header vollständig verwerfen? Denn alle Antworten betreffen hauptsächlich das Ändern oder Bearbeiten der Kopfzeile, anstatt sie zu löschen oder zu deaktivieren. – Manisha

Antwort

1

Sie können es für Android API tun> 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; 
    } 
} 
} 
+1

Das bedeutet, dass wir nur den Wert des Headers "X-Requested-With" ändern können. Können wir es komplett löschen oder verwerfen? – Manisha