2013-07-24 5 views
13

Próbuję zrobić, aby moje nagłówki WebView wyglądały tak, jakby użytkownik korzystał tylko ze zwykłej przeglądarki i nie korzystał z WebView. Z tego, co mogę zebrać, nagłówki są identyczne, oprócz tego, że WebView wysyła również nagłówek X-Requested-With zawierający nazwę pakietu aplikacji. Czy istnieje sposób, aby temu zapobiec?Android: Wyłącz X-Requested-With Header In WebView

+1

+1 zwykle X-o-z jest używany do wykrywania żądania ajax, rodzaj węży rzeczy, gdy android wysyła nagłówek na _wszystkie_ żądanie, AJAX czy też nie . – virtualeyes

+1

To brzmi jak http://stackoverflow.com/questions/7610790/add-custom-headers-to-webview-resource-requests-android – jlindenbaum

+0

@KingFu - Czy udało ci się całkowicie odrzucić nagłówek X-Request-With? Ponieważ wszystkie odpowiedzi dotyczą głównie modyfikowania lub edytowania nagłówka zamiast usuwania lub wyłączania go. – Manisha

Odpowiedz

1

Można to zrobić na 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; 
    } 
} 
} 
+1

Oznacza to, że możemy jedynie modyfikować wartość nagłówka "X-Requested-With". Czy istnieje sposób, w jaki możemy go całkowicie usunąć lub odrzucić? – Manisha