2016-06-16 11 views
2

すべてのajaxリクエストにカスタムヘッダを追加するためにwindow.fetchをオーバーライドしたいと思います。これはxhrのやり方と似ています。window.fetchプロトタイプをオーバーライドするとカスタムヘッダが追加されます

XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send; 
    var newSend = function(vData) { 
    this.setRequestHeader('ClientId', 'ANDROID'); 
    this.setRequestHeader('CustId', '%s'); 
    this.realSend(vData); 
}; 
XMLHttpRequest.prototype.send = newSend; 

アンドロイドのwebviewでこれを行うことができます。 shouldInterceptUrl(例:https://artemzin.com/blog/use-okhttp-to-load-resources-for-webview/)を使用してカスタムヘッダーを追加しようとしましたが、推奨されていないものです。私はそれを設定するにはかなりの仕事だ、それをテストしていない:どこか私たちはサービスワーカーに

<script> 
    navigator.serviceWorker.register('sw.js') 
</script> 

sw.js

// sw.js 
function isWhatYouWant(request){ 
    // check request if we should add headers 
    return true 
} 

self.addEventListener('fetch', event => { 

    if(isWhatYouWant(event.request)){ 
     event.request.headers.set('ClientId', 'ANDROID'); 
     event.request.headers.set('CustId', '%s'); 
     event.respondWith(fetch(event.request)); 
    } 

} 

PSを登録する必要がありますページの

+0

これを上書きせずにインターセプトしてサービスワーカーでヘッダーを編集し、[fetchEvent](https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent) – Endless

+0

私に例を教えてください。私は主にAndroid用のネイティブjavaで動作します。私はjavascriptであまりよくありません:(。 –

+0

あなたが行く、そこには、[フェッチクッキー](https://github.com/)のようにも簡単な方法がありますサーバー側でそれを行いました – Endless

答えて

1

サービスワーカーがホワイトリストに登録して登録することができます。これは100%正確であるが、少なくとも近くでも

androで動作するかどうかはわかりませんid webview

+0

ありがとうございましたが、彼は私のために働いていませんでしたが、バックエンドの後にXMLHttpRequestを変更することができました。 –

関連する問題