如果cookie禁用了,session還能用嗎,為什麼

來源:互聯網
上載者:User
如果cookie禁用了,session還能用嗎,為什麼

回複內容:

如果cookie禁用了,session還能用嗎,為什麼

常見的session實現方式是基於cookie的, 所以禁用cookie,session隨之時效

理論上只要在返回的頁面裡裡能帶上一個標識會話的令牌,在瀏覽器下一次提交的時候,能帶上這個令牌,會話就可以被保持

因此,cookie只是最優雅的實現session的方式,因為cookie對使用者來說不可見,同時會自動在HTTP報文中傳輸

但session也可以通過其他方式來保持, 比如放一個sessionId在URL的參數裡 :)

形象的給你描述下這個問題:
http請求是無狀態的。。假如你是瀏覽器,我是伺服器,那麼類似你知道我的電話號碼,可以給我打電話,但是我不知道你的電話號碼,我想和你說話只能等你跟我打。。
那麼問題來了,如果你想讓我相信你就是昨天給我打電話的那個人必須藉助一個新的東西,比如你給我打電話的時候我給你一串數字,你下次打給我告訴我這串數字我就知道你是誰了,這串數字在我這裡存的就叫session(可以簡單這麼理解),你自己也存了一份,那份叫cookie。你以後給我打電話順便把這個cookie給我就可以了。這個就是session和cookie的原理。
所以了,假如你要禁用cookie,通過cookie把那串數字給我就不行了。那你也可以把這串數字放在url後面給我,或者放到form表單裡給我,那也是可以的。
恩,就是這樣了。。不知道你有沒有理解。。

http://segmentfault.com/a/1190000003012552

通常情況下 Cookie 裡記錄了 Session 的 id ,所有 Cookie 被禁用了也就意味著 Session 失效了。不過 Session id 還有另外一種傳遞方式,就是在 URL 查詢中攜帶 Session id (既把所有的URL裡都帶上Session id的參數,如: http://xxx/index?sid=...)。不夠這種方法比較麻煩(所有的連結都要帶上),而且比較容易丟失 Session id(地址可以認為修改去掉ID),所有只是作為備選方案,在 Cookie 不能使用的環境下可以作為替代。

在php裡面,session_id是每個會話的唯一id,它預設被儲存到cookie中,請求時,根據cookie裡面的session_id來識別會話。

但可通過trans_sid設定(在編譯時間或php.ini)檔案中,對其進行修改。修改後,session_id能脫離cookie而存在,不同點在於,使用cookie時,從cookie中擷取session_id,而不使用cookie時,session_id會跟在url後面(PHP自動幹這事情)

 禁用了cookie的話,會使用url重寫的方式。session任然可以使用

https://www.zhihu.com/question/19786827/answer/21643186

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.