解決cas中cookie跨域,導致TGC丟失的問題

2021-10-18 13:15:58 字數 1218 閱讀 8474

我們訪問客戶端的鏈結為http://localhost:8081/gateway/login, 那cookie的域就是http://localhost:8081/。當cas客戶端重定向到cas服務端進行單點等會後,cas服務端單點登入的鏈結為http://localhost:8080/cas/login,那cookie的域為http://localhost:8080/cas。客戶端與服務端的域不一致,導致使用者在服務端登入成功後,並跳轉回客戶端,服務端產生的cookie都丟失了,丟失了tgc,首先影響的就是記住密碼功能,因為記住密碼的功能主要是依賴tgc去做快取的,tgc都沒有記錄,那記住密碼的功能就廢了。

利用nginx反向**客戶端以及服務端,讓他們都在同乙個域,這樣cookie就不會丟失了。

nginx.conf配置客戶端以及服務端的反向**,配置如下:

server 

location ^~ /gateway/

location /

error_page 500 502 503 504 /50x.html;

location = /50x.html

}

#注意,這個/gateway的配置需要和nginx對應上。並且也需要配置上此引數,否則cas client在進行st認證時,cas服務端會返回無效的st票據。

server.servlet.context-path=

/gateway

#localhost實際為網域名稱,根據第一步的nginx配置的設定值

啟動nginx以及重啟cas client後,訪問cas客戶端的url需要修改一下了,修改為nginx配置的路徑。我們重新登入後,檢視一下cookie是否記錄了tgc,看下圖:

由圖可知,cookie的域統一為http://localhost/,並且也記錄了tgc,至此,問題解決。

Cookie 解決Cookie跨域訪問

隨著工程的不斷擴大,要部署很多不同的服務,這其中就避免不了cookie的跨域問題,如何實現cookie在不同域之前實現傳輸,本文將詳細描述。1 path cookie的域我們如果不設定的話,預設是當前工程,例如 那麼它的域為www.test.com,通過domain我們可以設定cookie的域 通過...

解決跨域cookie共享

首先了解一下cookie,cookie有三種型別。第一種,當setcookie不設定過期時間時,cookie儲存在客戶端 記憶體中。關閉瀏覽器即實效。也叫 會話cookie,第二種是設定了過期時間。cookie儲存在客戶端的硬碟中,只有cookie過期的時候才過期,存在硬碟中的cookie,不同的瀏...

Cookie 跨域解決方案(IFrame跨域)

iframe跨域思路 假設有a.haorooms.com text.html和b.haorooms.com text.html兩個頁面,通過a.haorooms.com text.html頁面去修改b.haorooms.com text.html頁面的本地資料 在a.haorooms.com tex...