2009-10-26 83 views
1

我想安裝一個php頁面,它使用cURL命中第三方服務器來登錄它們。現在我的代碼成功登錄到第三方服務器,但由於cURL沒有發送SESSION餅乾給用戶,用戶必須自己登錄PHP和捲曲餅乾

如何獲取cURL將cookies轉發給客戶端。 感謝

回答

4

退房的documentation以下捲曲選項:

CURLOPT_COOKIE 
CURLOPT_COOKIEFILE 
CURLOPT_COOKIEJAR 

編輯

更徹底地閱讀你的問題後,我不敢告訴你,有沒有辦法寫除非您將客戶端重定向到您正在嘗試授權的網站,否則客戶端瀏覽器會使用Cookie。瀏覽器cookie使用名爲Same Origin Policy的安全模式運行。這基本上意味着域只能爲他們的OWN域發佈cookie,並且不能爲其他域發佈cookie。在你的具體情況下:

client --CONTACTS--> foo.com --cURL-LOGIN--> bar.com 
bar.com --bar.com-COOKIE--> foo.com --foo.com-COOKIE--> client 
client --foo.com-COOKIE--> bar.com (Will not work) 

基本上,foo.com不能在客戶端上爲bar.com創建cookie!

+0

子域呢? – 2009-10-26 14:45:49

+0

對於子域名,在從cURL獲取cookie後,使用我建議的選項,您應該使用set_cookie的域名爲「.domain.com」,其中domain是最長的公共子域名。 – 2009-10-26 14:49:41

1

用戶的瀏覽器很可能不允許您爲其他域設置Cookie。

您可以在您的PHP代碼中登錄並獲取(例如)Hotmail的會話cookie。但是你將無法將該會話傳遞給用戶(因此他/她也會登錄)。

這是因爲許多瀏覽器和配置都拒絕設置第三方Cookie。

+0

好吧,它在同一個子域內 服務器1:foo.bar.com 服務器2:sub.domain.bar.com – 2009-10-26 14:43:19

0

您可以在用戶的​​瀏覽器中設置cookie,而不必將其重定向到服務器。你需要做的是讓用戶用curl代碼打到你的php頁面。那麼你可以把他的發佈數據發送給服務器。但不要讓服務器重新啓動你。 設置選項,CURLOPT_FOLLOWLOCATION爲假,並設置CURLOPT_HEADER爲真 現在搶頭和提取餅乾和位置頭,然後通過這些測試 頭部像頭中的客戶端瀏覽器(「位置:...)和標題(「Set-Cookie:....)。您也可以通過提取其他標題來發送其他標題。以下[帖子] html page not getting cookies through libcurl也有類似的情況