小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

InternetSetCookie 之研究

 quasiceo 2014-08-09

    InternetSetCookie 函數(shù)用來在程序中以可編程的方式為某個制定的URL或Domain設(shè)定Cookie內(nèi)容。該函數(shù)聲明如下:

BOOL InternetSetCookie(
  __in          LPCTSTR lpszUrl,
  __in          LPCTSTR lpszCookieName,
  __in          LPCTSTR lpszCookieData
);
其中:

lpszUrl 代表要設(shè)定Cookie的URL

lpszCookieName 代表要設(shè)定的Cookie的名字,也就是Cookie鍵值對中的鍵名

lpszCookieData  代表要設(shè)定的Cookie的值,也就是Cookie鍵值對中的鍵值

 

     首先,我自己在本機建立一個ASPX頁面,并在Page_Load()中加入讀取Cookie的代碼:

 

Page_Load

 

然后,我創(chuàng)建一個簡單工程調(diào)用InternetSetCookie方法,寫入Cookie。而后進行測試。測試發(fā)現(xiàn),如果給寫入的Cookie起了名字,那么服務(wù)端讀取Cookie就會成功。但是,如果按照MSDN的描述,將Cookie的名字置空。在WebBrowser客戶端可以讀取到Cookie。但是在服務(wù)端就沒辦法使用Request對象的Cookies索引器正確讀取Cookie,但可以使用Request.Headers["Cookie"] 方式讀取到這一匿名Cookie。主要原因是HttpRequest.Cookies 屬性是CookieCollection類型的,這個類型是NameObjectCollectionBase的派生類,而這個NameObjectCollectionBase類的基本實現(xiàn)是哈希表。 如果存入沒有名字的值,那么這個值當(dāng)然也無法通過哈希檢索到,所以就讀取不到了。
其實,上面說的還不是重點。我重點想做是,在某個WebBrowser中,截獲用戶點擊的鏈接,把WebBrowser已經(jīng)登陸后獲得的Cookie寫入新打開的IE中,以便實現(xiàn)SSO的功能。截獲新建IE窗體事件,可以通過DWebBrowserEvent2的NewWindow3事件來實現(xiàn),這個比較簡單。麻煩的就是怎么把Cookie寫入新打開的IE。我曾經(jīng)期望InternetSetCookie來實現(xiàn)此功能。但MSDN告訴我們,InternetSetCookie設(shè)定的Cookie只在本進程內(nèi)有效,無法跨進程訪問。新建的IE當(dāng)然屬于新的進程,所以即使調(diào)用了InternetSetCookie設(shè)定了Cookie,新的IE也無法將Cookie內(nèi)容提交到服務(wù)器端。
最后使用的辦法是,在服務(wù)器端做一個ASPX頁面A,當(dāng)需要SSO訪問某個頁面時,先訪問頁面A。由頁面A將Cookie寫入,然后Redirect到制定的頁面。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多