記。回憶

關於部落格
說想說的,記想記的;

未完待續。
  • 83346

    累積人氣

  • 4

    今日人氣

    0

    訂閱人氣

登出 HTTP 基本認證 (HTTP authentication logout)

如果網頁使用 WWW-Authenticate: Basic 基本認證,這個認證資訊就會保存在 PHP_AUTH_USER 和 PHP_AUTH_PW 這兩個變數之中 ($_SERVER、$HTTP_SERVER_VARS和$GLOBALS都有),而且除非關閉瀏覽器,或是有新的認證資訊蓋掉舊的,不然這個認證資訊就會一直保留在 client 端的瀏覽器裡,所以就算將變數統統 unset 掉,一旦有新的頁面載入,瀏覽器就會自動將認證資訊重新寫入到這兩個變數裡面,使得這個認證一直無法登出,直到瀏覽器關閉。如果網頁使用 WWW-Authenticate: Basic 基本認證,這個認證資訊就會保存在 PHP_AUTH_USER 和 PHP_AUTH_PW 這兩個變數之中 ($_SERVER、$HTTP_SERVER_VARS和$GLOBALS都有),而且除非關閉瀏覽器,或是有新的認證資訊蓋掉舊的,不然這個認證資訊就會一直保留在 client 端的瀏覽器裡,所以就算將變數統統 unset 掉,一旦有新的頁面載入,瀏覽器就會自動將認證資訊重新寫入到這兩個變數裡面,使得這個認證一直無法登出,直到瀏覽器關閉。

為了解決這個問題,當然是使用實際的登入頁面,而不要使用 WWW-Authenticate 最為直接,但是如果還是要使用,這一個網頁或許指出了一些方向:

http://stackoverflow.com/questions/449788/http-authentication-logout-via-php

我的環境裡面,使用了 IE 和 Chrome 兩種瀏覽器,我在登出頁面中,加入了下列程式碼:

<?php
    // for chrome
    header("HTTP/1.0 401 Unauthorized");
 
    // for IE
    echo "<script type="text/javascript">n";
    echo "document.execCommand("ClearAuthenticationCache");n";
    echo "</script>n";
?>

算是暫時解決了無法登出的問題,只是不知道 firefox 和 safari 是否有效了。
相簿設定
標籤設定
相簿狀態