我一直想知道从XMLHttpRequest收到的cookie存储在哪里(在Android / iOS中)......
情况:
我执行XHR请求进行身份验证。由于某种原因,这会启动一种会话,而我执行的所有其他请求都不再需要凭据。需要这种情况,但应用程序中有一个部分需要其他凭据。当我执行另一个XHR请求时,使用哪个凭据并不重要,它将继续使用我最初输入的凭据。
我使用的是什么:
我注意到了[ANDROID]:
我尝试了什么没有成功:
当我想要使用新凭据时,为URL添加一个参数。
var xhr = new XMLHttpRequest;
xhr.open('GET', 'test.html?_=' + new Date().getTime());
xhr.send();
InAppBrowser功能:
window.open(“index.html”,“_ self”, “位置=无,clearsessioncache =是”);
我想要的是什么:
非常感谢专家的帮助。
答案 0 :(得分: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,您必须构建自定义插件。
答案 1 :(得分:0)
我为Android找到的解决方案不是重启整个应用程序,而是在单独的进程中隔离登录活动,然后通过添加 Process.killProcess覆盖 onDestroy()方法。 (Process.myPid())。
清单中
:<activity
android:name=".Activities.AdfsLoginActivity"
android:noHistory="true"
android:excludeFromRecents="true"
android:process=":adfsLoginProcess"
android:windowSoftInputMode="stateHidden|adjustResize" />
在LoginActivity中:
@Override
protected void onDestroy() {
super.onDestroy();
//kills current process - adfsLoginProcess
Process.killProcess(Process.myPid());
}
此解决方案并不完美(因为我不喜欢Process.killProcess()),但是它似乎比杀死整个应用程序并安排重新启动要好得多。如果有人有更好的解决方案,请分享。