Cookie 解決Cookie跨域訪問

2021-08-20 21:52:11 字數 2091 閱讀 1745

隨著工程的不斷擴大,要部署很多不同的服務,這其中就避免不了cookie的跨域問題,如何實現cookie在不同域之前實現傳輸,本文將詳細描述。

1、path

cookie的域我們如果不設定的話,預設是當前工程,例如:

,那麼它的域為www.test.com,通過domain我們可以設定cookie的域

#通過設定domain

#頂級網域名稱伺服器與二級網域名稱伺服器之間哪個設定都能生效

#設定完畢後寫回到客戶端,用另乙個伺服器即可訪問此cookie

cookie.setdomain("test.com");

我們可以通過nginx反向**,將兩個伺服器網域名稱統一到乙個反向**伺服器。

upstream www.test

.com

server

}

$.ajax(,

datatype: "json",

//設定crossdomain與withcredentials的作用 :

//允許攜帶cookie,不開啟是不能帶cookie到後台的,

//同時後台也不能往前台寫cookie

crossdomain: true,

xhrfields: ,

success: function

(data)

});

最重要的是設定withcredentials: true

引數crossdomain: true是指傳送ajax時,request header 中會包含跨域的額外資訊,但不會含cookie,建議設定此引數

因為跨域訪問主要是由後端控制,伺服器端也要設定兩個重要引數

access-control-allow-origin: 控制允許攜帶cookie訪問的域

access-control-allow-credentials: 允許客戶端攜帶證書式訪問

#允許來自所有域的跨域請求訪問

response.setheader("access-control-allow-origin", "*");

#只接收來自的cookie

response.setheader("access-control-allow-origin","");

一般使用以下方式

if ( request.getheader("origin") != null ) 

}

同時還要設定另乙個重要引數

//如果ajax裡 withcredentials為true,就必須開啟這個選項,

//允許攜帶證書式訪問(允許操作cookie),預設是false

response.setheader("access-control-allow-credentials", "true");

伺服器端 access-control-allow-credentials = true時,引數access-control-allow-origin 的值不能為 *

由於我們頻繁設定 access-control-allow-origin 很不方便,我們可以引入filter,它是在tomcat的lib包下的 catalina.jar 中。

corsfilterfilter-name>

org.apache.catalina.filters.corsfilterfilter-class>

filter>

corsfilterfilter-name>

/*url-pattern>

這樣我們就可以省略以下**了

if ( request.getheader("origin") != null ) 

}

Cookie跨域操作解決方案Cookie跨域操作

cookie跨域操作解決方案cookie跨域操作 cookie在www主網域名稱下建立,並寫入domain屬性,如 為方便除錯以下 皆為asp code write.asp response.cookies cookiename username sunbird response.cookies c...

解決跨域cookie共享

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

Cookie跨域問題的解決

前後端完全分離的專案,前端使用vue axios,後端使用springboot。使用cors協議解決跨域訪問資料限制的問題,但是發現客戶端的axios請求不會自動帶上伺服器返回的cookie jsessionid。導致每乙個axios請求在服務端看來都是乙個新的請求,都會在服務端建立新的sessio...