簡體   English   中英

如何清除Windows Phone 8 Cordova插件中的Cookie?

[英]How can I clear the cookies in a windows phone 8 cordova plugin?

我試圖弄清楚如何清除Windows Phone 8 cordova插件中的cookie。

我一直在這里http://cloudstore.blogspot.in/2010/09/clearing-cookies-on-windows-phone-7-or.html和這里http://developer.nokia.com/社區/ wiki / Integrate_Facebook_to_Your_Windows_Phone_Application

基本上,您可以獲取網絡瀏覽器實例並使用便捷方法,例如:

await browserInstance.ClearCookiesAsync();

或者您從請求中獲取Cookie並丟棄/過期它們,如下所示:

HttpWebRequest _webRequest;
Uri uri = new Uri("https://blah.com");
CookieContainer _cookieContainer = new CookieContainer();
_webRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
_webRequest.CookieContainer = this._cookieContainer;
var cookies = this._cookieContainer.GetCookies(uri);
foreach (Cookie cookie in cookies)
{
   cookie.Discard = true;
   cookie.Expired = true;
}

我的問題有兩個:

1)我不知道如何獲取cordova瀏覽器實例才能嘗試調用ClearCookiesAsync()方法

2)我不使用HTTPWebRequest對象,因為我需要訪問權限來設置一些標頭信息,我使用的是HTTPClient對象和HTTPRequestMessage,即:

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://blah.com");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/html"));
client.DefaultRequestHeaders.Add("Some custom stuff","More custom stuff");
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get,"/something/hello.php");
HttpResponseMessage response = await client.SendAsync(req);
response.EnsureSuccessStatusCode();
string responseBody = string.Empty;
responseBody = await response.Content.ReadAsStringAsync();
Debug.WriteLine(responseBody);

因此,基本上,如果我能弄清楚如何在插件中從cordova獲取瀏覽器實例,或者從HTTPClient清除cookie,就可以了。

編輯:有趣的... 如何在Windows Phone 8中獲取HttpOnly cookie?

顯然,您可以通過HttpClientHandler來訪問cookie,所以上面我的代碼的開始就是這樣...

HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = new CookieContainer();
HttpClient client = new HttpClient(handler);

...但是創建新的Cookie容器似乎無法清除Cookie?

這看起來也很有趣: 在.net 4.5中使用HttpClient努力使cookie失去響應

我使用了上面的鏈接,該鏈接確實確實從HttpResponseMessage中檢索了cookie,但是嘗試使用cookie.Discard和cookie.Expired使這些cookie無效。

似乎答案是您必須讓cordova瀏覽器實例丟棄cookie,以上內容僅會讓您以似乎是只讀的方式使用來自各個響應的cookie:

相似/重復的問題:

通過 在Cordova上 運行Windows Phone ClearCookiesAsync()的 phonegap插件訪問cookie或WebBroswer類

我發現執行此操作的更簡單方法是使用基於服務器的“注銷” URL,該URL將設置cookie具有過去的過期時間,從而使cookie無效。

基本上,盡管android和ios可以滿足我的要求,但是您似乎無法使用Windows Phone API輕松完成此操作,因為我發現該API“在”那里,但是由於以下原因,它很難通過cordova插件進行訪問在問題中解釋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM