我在本地跨兩個「域」工作。我在我的機器上有enterprise.local和application.local虛擬主機,我需要爲「local」或「.local」設置一個域名cookie。但是,在正確設置cookie時遇到了一些麻煩。在application.local,我有這樣的:問題設置Cookie w/PHP
setcookie('iPlanetDirectoryPro', trim($token_id), '0', '/', '.local');
header('Location: /adcom-sso');
我也試過這樣:
header('Set-Cookie: iPlanetDirectoryPro=' . trim($token_id) . '; path=/');
header('Location: /adcom-sso');
使用setcookie()
,沒有cookie被設定過。使用Set-Cookie
標題,Cookie 設置爲。我已經從兩者中刪除了重定向,結果從未改變。它適用於Set-Cookie
,但不適用於setcookie()
。這將是罰款,因爲我真的沒有我使用的解決方案的偏愛,但在Set-Cookie
解決方案,只要我添加域這一切發生故障:當我在加
header('Set-Cookie: iPlanetDirectoryPro=' . trim($token_id) . '; path=/; domain=local');
域值,我得到一個頭錯誤:
Header may not contain more than a single header, new line detected.
我試過域值爲「local」和「.local」。行爲不會改變。
我很少必須明確地訪問cookie,所以我希望我只是錯過了一些明顯的東西,但我一定沒有看到它。任何有識之士將不勝感激。
更新:我想我已經縮小了這一點。似乎只要我不包含域值,兩種方式都可以使用。使用「local」或「.local」作爲cookie的特定域名會出現問題嗎?
我已經嘗試了所有這些。最初,我根本沒有修剪。我也試過setrawcookie(),儘管爲了簡單起見我沒有在這裏包含它。在Set-Cookie解決方案中,我也嘗試手動urlencode()處理$ token_id。我只是嘗試了preg_replace()的想法,它沒有改變任何東西。謝謝。 – 2009-09-03 00:04:06
「標題可能不包含...」將不會觸發,除非您在此處有換行符。我查看了PHP源代碼('sapi_header_op()')。你肯定有這個錯誤的換行問題。 – Inshallah 2009-09-03 01:39:24
我最終追查的內容與您的編輯相匹配。只要我嘗試「.local.com」,一切都很順利。在這種情況下,問題是因爲我的開發環境讓我的「域名」保持簡單。它不應該成爲生產環境中的問題。謝謝你的幫助。 – 2009-09-03 11:34:06