2013-07-24 11 views
13

Sto cercando di rendere le intestazioni di WebView simili a quelle dell'utente che utilizza solo il normale browser e non utilizza una WebView. Da quello che posso raccogliere le intestazioni sono identiche a parte che WebView invia anche un'intestazione X-Requested-With contenente il nome del pacchetto delle app. C'è un modo per prevenirlo?Android: Disabilita X-Requested-With Header in WebView

+1

+1 solito X-richiesta-con viene utilizzato per rilevare richiesta AJAX, tipo di tubi cose quando Android invia l'intestazione su _ogni_ richiesta, Ajax o no . – virtualeyes

+1

Sembra molto simile a http://stackoverflow.com/questions/7610790/add-custom-headers-to-webview-resource-requests-android – jlindenbaum

+0

@KingFu - Sei riuscito a scartare completamente l'intestazione X-Request-With? Perché tutte le risposte riguardano principalmente come modificare o modificare l'intestazione invece di come eliminarla o disattivarla. – Manisha

risposta

1

È possibile farlo per API Android> 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

Ciò significa che possiamo modificare solo il valore dell'intestazione "X-Requested-With". È possibile eliminarlo o scartarlo completamente? – Manisha