首頁 >運維 >Nginx >Nginx轉送遺失Cookies如何解決

Nginx轉送遺失Cookies如何解決

WBOY
WBOY轉載
2023-05-15 21:10:123059瀏覽

一. 遺失Cookies操作

路径一 :http://localhost:8080/content/requestAction!showMainServiceReqDetail.action
路径二 :http://localhost/content/requestAction!showMainServiceReqDetail.action
路径三 :http://localhost/clp/requestAction!showMainServiceReqDetail.action

路徑一是直接訪問,路徑二與路徑三是透過nginx訪問

三個存取前提條件
①瀏覽器有Cookie,如下圖所示:
透過存取路徑http://localhost:8080/content/requestAction!XXX.action 附加Cookies中的JSESSIONID。
此cookies中有JSESSIONID,存放著本次訪問,後端可以認證的唯一JSESSIONID,如果沒有它就會導致無法訪問。

Nginx轉送遺失Cookies如何解決

②配置了nginx設定檔

server {
      listen       80;
      server_name  localhost;
location /clp {
   #proxy_set_header Host $host;
   #proxy_set_header X-Real-IP $remote_addr;
   #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://localhost:8080/content;
   
}

location /content {
   #proxy_set_header Host $host;
   #proxy_set_header X-Real-IP $remote_addr;
   #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://localhost:8080/content; 
}

透過上面三個路徑訪問,路徑一與路徑二可以存取成功,路徑三訪問失敗

二. 遺失Cookies原因

因為http://localhost:8080/content/requestAction!XXX.action的存取路徑為/content/requestAction
方式一進行訪問沒有,沒有使用nginx,所以不會丟失cookies,
方式二訪問雖然使用了nginx,但是因為未經過nginx轉發前路徑相同,所以並不會丟失nginx
方式三訪問使用了nginx,而訪問路徑也不同導致了nginx轉送遺失cookies的問題。

三.解決方案

location /clp {
   #proxy_set_header Host $host;
   #proxy_set_header X-Real-IP $remote_addr;
   #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_cookie_path /content /clp;  #这一句就可以解决nginx转发丢失cookie的问题
   proxy_pass http://localhost:8080/content;	   
}

四. 容易搞不清楚的點

上面的存取路徑是下圖紅框中的路徑,只有第一個斜杠後面的才是。

Nginx轉送遺失Cookies如何解決

以上是Nginx轉送遺失Cookies如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除