2016-05-04 4 views
1

...XMLHttpRequest資格情報(NTLM)がphonegap/cordovaにキャッシュされないようにするにはどうすればよいですか? (アンドロイド/ iOSの中)のXMLHttpRequestから受け取ったクッキーが保存されますどこ私は思ってきた

状況:

私が行う認証するXHRリクエスト。何らかの理由でこれがセッションの種類を開始し、私が実行する他のすべての要求はもはや認証情報を必要としません。このような状況が望まれますが、アプリケーションに他の資格情報が必要なセクションがあります。別のXHRリクエストを実行すると、どの資格情報を使用しても問題はありません。最初に入力した資格情報が引き続き使用されます。私が使用してどのような

  • jQueryMobile
  • 角度
  • 私は[アンドロイド]気づい何

  • 資格情報やセッションがオンに殺されますアプリの再起動! (バックボタンが押されたときのように - 完全に閉じておく必要があります)。だから私は再びログインする必要があります。
  • 私は成功せずにしようとした何

  • 私は新しい資格情報を使用したい時にURLへのparamを追加します。

    var xhr = new XMLHttpRequest; 
    xhr.open('GET', 'test.html?_=' + new Date().getTime()); 
    xhr.send(); 
    
  • InAppBrowser機能:

window.open( "index.htmlを"、 "_self"、 "場所=なし、clearsessioncache = YES")。

私が欲しいもの:

  • 私はもうそのセッションを見つけるために...私は実際にそれがだどこ知りたい見当もつかない保存される。他のXMLHttpCredentialsとの別の成功した呼び出しを実行できるように、削除/クリアする方法が必要です。
  • XMLHttpRequestが自動的に提供するキャッシュ機能を使用したいと思います。

エキスパートの助けがあれば幸いです。

+0

'document.cookie'を調べて、最初のアクセス後に認証クッキーが保存されているかどうか試してみましたか?もしそうなら、あなたはそれをクリアしたいでしょう。 Cordovaのアプリケーションは、プラットフォーム(WebView、WkWebview、またはUIWebView)で提供されているブラウザキットを使用し、作成したセッションのCookieをすべて保存します。 – yelsayed

+0

console.log(document.cookie);ログ ""。 – Josh

答えて

0

私が知る限り、これらの資格情報をAndroidでクリアする唯一の方法は、アプリを再起動することです。本当に必要な場合は、プログラムでこれを行うことができます。

iOSでは、保存された資格情報をsharedCredentialStorageで管理できます。たとえば、すべての資格情報を削除するには:

NSDictionary* credentialsDict = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials]; 

for (NSURLProtectionSpace* protectionSpace in credentialsDict){ 
    NSDictionary* userNameDict = credentialsDict[protectionSpace]; 
    for (NSString* userName in userNameDict){ 
     NSURLCredential* credential = userNameDict[userName]; 
     [[NSURLCredentialStorage sharedCredentialStorage] removeCredential:credential forProtectionSpace:protectionSpace]; 
    } 
}  

ネイティブAPIにアクセスするには、カスタムプラグインを作成する必要があります。

+0

Androidの代替手段はありますか?同じ結果を得るためにはどの方向に検索しなければなりませんか? – Josh

関連する問題