国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

cookie跨域共享 cookie二級域名共享 前后端分離項(xiàng)目共享cookie

mj / 2679人閱讀

摘要:例如和,這兩個(gè)域名的二級域名就是相同的代碼實(shí)現(xiàn)基于添加通過二級域名共享添加通過二級域名共享關(guān)閉瀏覽器時(shí)刪除代表關(guān)閉瀏覽器刪除負(fù)數(shù)則關(guān)閉瀏覽器失效沒有刪除參數(shù)介紹需要設(shè)置的二級域名至少是二級域名,可以是三級域名四級域名設(shè)置可以訪問的路徑。

背景

最近在做sso單點(diǎn)登錄,sso登錄成功后后端需要把token和用戶信息以cookie的方式傳送給前端,由于項(xiàng)目是前后端分離的,這就涉及到了前后端跨域共享cookie的問題,下面就說說我在項(xiàng)目中的解決思路。

解決思路一 —— 通過二級域名共享cookie

一開始在網(wǎng)上看了很多的跨域共享cookie的方法,使用最多的是jsonp和cors這兩種,今天我介紹的是另外一種---基于二級域名共享cookie,原因是簡單...(注意使用二級域名共享cookie有一個(gè)限制條件,就是兩個(gè)域名的二級域名必須相同)

二級域名
先來介紹一下什么是二級域名,拿www.baidu.com做例子,com是這個(gè)域名的一級域名,baidu.com是這個(gè)域名的二級域名,www.baidu.com是這個(gè)域名的三級域名,以此類推...
二級域名共享就是兩個(gè)域名的的二級域名必須相同,只有符合這個(gè)條件它們之間的cookie才能共享。(例如:a.XXX.test.io和b.test.io,這兩個(gè)域名的二級域名就是相同的)

代碼實(shí)現(xiàn)(基于JDK1.8)

    //添加cookie cookieName
    Cookie cookieName = new Cookie("user_name", userName);
    cookieName.setDomain("test.io");        //通過二級域名共享cookie
    cookieName.setPath("/");
    cookieName.setMaxAge(Integer.MAX_VALUE);
    cookieName.setSecure(false);
    response.addCookie(cookieName);

    //添加cookie token
    Cookie token = new Cookie("token", token);
    token.setDomain("test.io");       //通過二級域名共享cookie
    token.setPath("/");
    token.setMaxAge(Integer.MAX_VALUE);
    token.setSecure(false);
    response.addCookie(token);
    
    //關(guān)閉瀏覽器時(shí)刪除cookie
    Cookie token = new Cookie("token", null);
    token.setDomain("test.io");
    token.setPath("/");
    token.setSecure(false);
    token.setMaxAge(0);  //0代表關(guān)閉瀏覽器刪除cookie,負(fù)數(shù)則關(guān)閉瀏覽器cookie失效(沒有刪除)
    response.addCookie(token);

參數(shù)介紹
domain:需要設(shè)置的二級域名(至少是二級域名,可以是三級域名、四級域名...)
path:設(shè)置可以訪問cookie的路徑。假如cookie1的path為/test/,cookie2的path為/test/t/,那么test路徑下的所有頁面都可以訪問到cookie1,而cookie2只有/test/t/下的頁面才能訪問。
maxAge:過期時(shí)間(時(shí)間單位為秒),設(shè)置為負(fù)數(shù)關(guān)閉瀏覽器該cookie失效,設(shè)置為0表示刪除該cookie,整數(shù)則設(shè)置時(shí)間過后cookie失效
secure:是否加密方式傳輸,默認(rèn)false,為true的話只能使用https協(xié)議(因?yàn)閔ttps協(xié)議是加密協(xié)議,而HTTP不是)。

解決思路二 —— 通過設(shè)置response的header

直接上代碼

@RequestMapping(value = "/test.do")
public void testHandler(HttpServletRequest request, HttpServletResponse response){
    response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, accept, content-type, xxxx");
    response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
    response.setHeader("Access-Control-Allow-Credentials", "true"); 
    response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
    Cookie cookieName = new Cookie("user_name", "test");
    cookieName.setPath("/");
    cookieName.setMaxAge(Integer.MAX_VALUE);
    response.addCookie(cookieName);
   
}

解釋:
"Access-Control-Allow-Headers":可選字段,XMLHttpRequest對象的getResponseHeader()方法只能拿到6個(gè)基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必須在Access-Control-Expose-Headers里面指定。
"Access-Control-Allow-Methods":可選字段,允許請求該接口的方法類型。
"Access-Control-Allow-Credentials":可選字段。它的值是一個(gè)布爾值,表示是否允許發(fā)送Cookie。默認(rèn)情況下,Cookie不包括在CORS請求之中。設(shè)為true,即表示服務(wù)器明確許可,Cookie可以包含在請求中,一起發(fā)給服務(wù)器。這個(gè)值也只能設(shè)為true,如果服務(wù)器不要瀏覽器發(fā)送Cookie,刪除該字段即可。
"Access-Control-Allow-Origin":必填字段。它的值要么是請求時(shí)Origin字段的值(如示例中http://localhost:8080),要么是一個(gè)*,表示接受任意域名的請求。

解決思路三 —— 設(shè)置@CrossOrigin

先看代碼實(shí)現(xiàn)

@CrossOrigin(origins = "http://localhost:8080", maxAge = 3600, methods = {RequestMethod.OPTIONS, RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE})
@RequestMapping(value = "/test.do")
public void testHandler(HttpServletRequest request, HttpServletResponse response){
    
    Cookie cookieName = new Cookie("user_name", "test");
    cookieName.setPath("/");
    cookieName.setMaxAge(Integer.MAX_VALUE);
    response.addCookie(cookieName);
   
}

@CrossOrigin注解是被注解的方法具備接受跨域請求的功能。默認(rèn)情況下,它使方法具備接受所有域,所有請求消息頭的請求。。。。這個(gè)例子中,我們僅接受

http://localhost:8080發(fā)送來的跨域請求。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76475.html

相關(guān)文章

  • 跨域問題匯總

    摘要:因?yàn)闉g覽器的同源策略,前端開發(fā)會遇到各種跨域問題。前言在總結(jié)各種跨域問題之前,我們先來了解一下瀏覽器的同源策略。所以只能解決一級域名相同二級域名不同的跨域問題。 跨域問題的場景和解決方案多種多樣,只要是做前端開發(fā),總會遇到。而且面試時(shí)也是必問的問題。所以自己學(xué)習(xí)總結(jié)記錄一下。 因?yàn)闉g覽器的同源策略,前端開發(fā)會遇到各種跨域問題。本篇文章總結(jié)了遇到跨域問題的不同的場景以及對應(yīng)的解決方案。 ...

    MkkHou 評論0 收藏0
  • 徹底弄懂跨域問題

    摘要:瀏覽器同源策略我們?yōu)楹我芯靠缬騿栴}因?yàn)闉g覽器的同源策略規(guī)定某域下的客戶端在沒明確授權(quán)的情況下,不能讀寫另一個(gè)域的資源。 跨域,老生常談的問題 簡述 作為一只前端菜鳥,跨域方面只懂得JSONP和CORS,并未曾深入了解。但隨著春招越來越近,就算是菜鳥也要猛振翅膀。近幾日仔細(xì)研究了跨域問題,寫下這篇文章,希望對開發(fā)者們有所幫助。在讀本文前,希望您對以下知識略有了解。 瀏覽器同源策略 n...

    CoorChice 評論0 收藏0
  • 【Geek議題】當(dāng)年那些風(fēng)騷的跨域操作

    摘要:同源策略年,同源政策由公司引入瀏覽器。標(biāo)簽不受同源策略限制,但只能發(fā)起請求。這一行為使得不同域的特定文檔可以讀取該屬性值,因此可以繞過同源策略并使跨域消息通信成為可能。 前言 現(xiàn)在cross-origin resource sharing(跨域資源共享,下簡稱CORS)已經(jīng)十分普及,算上IE8的不標(biāo)準(zhǔn)兼容(XDomainRequest),各大瀏覽器基本都已支持,當(dāng)年為了前后端分離、if...

    mengera88 評論0 收藏0
  • 【Geek議題】當(dāng)年那些風(fēng)騷的跨域操作

    摘要:同源策略年,同源政策由公司引入瀏覽器。標(biāo)簽不受同源策略限制,但只能發(fā)起請求。這一行為使得不同域的特定文檔可以讀取該屬性值,因此可以繞過同源策略并使跨域消息通信成為可能。 前言 現(xiàn)在cross-origin resource sharing(跨域資源共享,下簡稱CORS)已經(jīng)十分普及,算上IE8的不標(biāo)準(zhǔn)兼容(XDomainRequest),各大瀏覽器基本都已支持,當(dāng)年為了前后端分離、if...

    Worktile 評論0 收藏0

發(fā)表評論

0條評論

mj

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<