2012-11-16 64 views
-1

我正在使用的應用程序接受三種不同類型的登錄。如果客戶端從某些IP地址或POST請求(從正常的瀏覽器呈現形式)或朝向JSON讀取API端點進行連接,則會自動進行。LAMP堆棧中的哪個應用程序組件設置了「Set-Cookie」標頭

所有三個選項歸結爲調用相同的功能來註冊用戶登錄,並生成一個會話。

儘管代碼路徑與我所能確定的相同,但其中兩個始終如一地工作,而一個始終無法將「Set-Cookie」頭添加到響應中,即使應用程序邏輯生成的sessionid被髮送到響應主體中。

從來沒有必要深入瞭解會話身份驗證如何工作到這個級別的細節,我意識到我不明白。 其中'Set-Cookie'標頭,應該來自。應用程序邏輯是否總是手動構建標題?一旦session_start()被調用,PHP會自動執行它嗎? Apache是​​否根據標題的其他部分來做它?

我排除了1,因爲我沒有在我正在使用的代碼庫中找到任何與grep -ri "set.cookie" *有關的東西。

回答

1

session_start發送會話緩存限制器會話cookie(或設置$ _GET鍵與PHPSESSID)。

此函數是Set-Cookie參數的發送地址。當Apache發回頁面時,它會將它傳回給瀏覽器。

但是,您需要記住,存儲Cookie實際上是直到瀏覽器。總的來說,它們將毫無問題地設置,但某些條件會阻止這種情況的發生,例如Internet Explorer中的安全設置或用戶完全拒絕Cookie。

進一步閱讀:

http://www.php.net/manual/en/function.session-start.php

http://www.php.net/manual/en/function.session-get-cookie-params.php

http://www.php.net/manual/en/function.session-status.php

相關問題