ajax 跨域cookie解決方案

2021-08-22 13:07:41 字數 1103 閱讀 6566

什麼是session, 什麼是cookie?

session是由應用伺服器維持的乙個伺服器端的儲存空間,使用者在連線伺服器時,會由伺服器生成乙個唯一的

sessionid,用該sessionid為識別符號來訪問伺服器端的session儲存空間。而sessionid這一資料則是儲存到客戶

端,用cookie儲存的,使用者提交頁面時,會將這一sessionid提交到伺服器端,來訪問session資料。這一過程,

是不用開發人員干預的。所以一旦客戶端禁用cookie,那麼session也會失效。cookie是客戶端的儲存空間,由

瀏覽器來維持。

url重寫

伺服器也可以通過url重寫的方式來傳遞sessionid的值,因此不是完全依賴cookie。如果客戶端cookie禁用,則

伺服器可以自動通過重寫url的方式來儲存session的值,並且這個過程對程式設計師透明。可以試一下,即使不寫

cookie,在使用request.getcookies();取出的cookie陣列的長度也是1,而這個cookie的名字就是

jsessionid,還有乙個很長的二進位制的字串,是sessionid的值。實質上 url 重寫是通過向 url 連線新增參

數,並把 session id 作為值包含在連線中。然而,為使這生效,你需要為你的 servlet 響應部分的每個連線

新增 session id.

同源下http cookie的協議

在同源時,不管是ajax請求還是普通的get post請求,瀏覽器訪問時都是會帶著本域下所有的cookie一起訪問服

務端。服務端在響應時又會通過http header中的set cookie返回給瀏覽器。瀏覽器把cookie再寫入該網域名稱下的

cookie儲存空間。如此來迴圈

跨域下http cookie的協議

當跨域時,瀏覽器端請求服務端都不會帶著cookie的資訊。在使用ajax請求時,如果不進行特殊的處理還會有

同源錯誤產生,更不用說帶著cookie了。 服務端返回的cookie,瀏覽器也不會寫入其對應的網域名稱下的儲存空

間。那麼怎麼解決這個問題,xmlhttprequest 2 給出了解決方案。

具體內容請參考

ajax跨域與cookie跨域

ajax跨域取資料 利用可以跨域載入js的原理 functioncallback 這是需要返回這樣乙個js函式 ajax資料型別使用jsonp 如 ajax url callbask x datatype jsonp type get 在使用資料型別為jsonp時,jquery自動會在url路徑上拼...

ajax 跨域攜帶COOKIE

背景 專案中用pdf.js外掛程式開啟pdf流文件 這個問題屬於ajax跨域攜帶cookie的問題,找了一篇博文的解決方案。1,原生ajax請求方式 xhr.withcredentials true 支援跨域傳送cookies xhr.send 2,jquery的方法請求 ajax crossdom...

Cookie 解決Cookie跨域訪問

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