每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          注:關于跨域登陸cookie的問題在網上搜索了一下,沒看到有java下的示例,這個asp的也可以參照一下,有空再在java下測一下.

          key words:單點登陸 SSO 跨域cookie


          摘要:當你有一個Cookie組(或叫Cookie字典)使用Domain屬性指定域名之后,當你在對該組的成員進行修改或新增的時候,一定要在操 作之后加上Resonse.Cookies(CookieName).Domain屬性。如果沒有必要,請不要修改已設置Domain的Cookie組.
          關鍵字:
          正文:
          ????Cookie跨域操作看來是個簡單的問題,因為只要指定Domain屬性為指定網站的根域名就可以了.但是筆者在實際使用過程中卻遇到了一些問題,的確值得注意.?   環境介紹   cookie在www主域名下創建,并寫入Domain屬性,如:(為方便調試以下代碼皆為asp代碼)   Write.asp <%
          Response.Cookies(CookieName)("UserName")?=?"SunBird"
          Response.Cookies(CookieName)("Password")?=?"xyz1234"
          Response.Cookies(CookieName).Domain?=?"xxxx.com"
          %>
            上面文件放在www主域名下,同時在同目錄下放置一個讀取cookie的Read.asp   Read.asp <%
          Response.Write?Request.Cookies(CookieName)("UserName")
          Response.Write?Request.Cookies(CookieName)("Password")
          %>
            再放一個Read.asp文件到另外一個子域名站點里,代碼同上。最后我們再做一個清除cookie的Clear.asp放在主域名下   Clear.asp <%
          Response.Cookies(CookieName)("UserName")?=?""
          Response.Cookies(CookieName)("Password")?=?""
          Response.Cookies(CookieName).Domain?=?"xxxx.com"
          %>
            現在可以通過下面的執行順序來測試,Write.asp-->主域名的Read.asp-->子域名的Read.asp?所有 Read.asp頁面都可以讀取到Write.asp創建的cookie的值,然后再運行Clear.asp進行清除,一切都Ok,看上去沒有什么問題。   但是把這種方法運用到實際的站點時卻出現問題了。   問題描述:   第一次登錄一切ok,所有子域名都可以訪問到主域名存儲的cookie,但是,一旦退出之后,子域名的cookie被清除了,但是主域名的 cookie仍然保留著,強行清除主域名的cookie之后,無論怎樣登錄主域名下都無法保存cookie了,除非關掉瀏覽器重新打開。   經過多次嘗試之后,無意中發現問題所在,以下是測試經過。   創建一個Write2.asp的頁面放在主域名下 <%
          Response.Cookies(CookieName)("TEST_COOKIE")?=?"TEST_COOKIE"
          %>
            第一步:關閉瀏覽器后,按以下順序執行,Write.asp-->主域名的Read.asp-->子域名的Read.asp?到這里所有Read.asp讀取正常。   第二步:Clear.asp-->主域名的Read.asp-->子域名的Read.asp?到這里清除操作是成功的。   第三步:Write.asp-->?Write2.asp?-->?主域名Read.asp?-->?子域名Read.asp?到這里兩個Read.asp都可以讀取到cookie的值。   第四步:重新執行第二步,發現主域名Read.asp仍然輸出了值,而子域名下的Read.asp的值已經被清空了。   根據以上測試總結以下幾點再跨域使用cookie時需要注意的地方   1、當你有一個Cookie組(或叫Cookie字典)使用Domain屬性指定域名之后,當你在對該組的成員進行修改或新增的時候,一定要在操作之后加上Resonse.Cookies(CookieName).Domain屬性。   2、如果沒有必要,請不要修改已設置Domain的Cookie組,直接使用Response.Cookies("CookieText")?=?CookieValue?來創建一個新的Cookie。
          posted on 2006-09-18 20:59 Alex 閱讀(2502) 評論(0)  編輯  收藏 所屬分類: web技術
          主站蜘蛛池模板: 沙雅县| 博兴县| 镇江市| 桐庐县| 鄄城县| 两当县| 同德县| 武清区| 齐河县| 元朗区| 登封市| 河北省| 浦江县| 防城港市| 天津市| 依兰县| 夹江县| 乡宁县| 诸暨市| 陈巴尔虎旗| 和龙市| 水富县| 达尔| 松桃| 珠海市| 霍邱县| 桂东县| 安阳县| 达尔| 金乡县| 宿松县| 望奎县| 恭城| 永寿县| 安乡县| 静海县| 大连市| 巴彦淖尔市| 泰和县| 应用必备| 阳新县|