溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

cookie跨域共享的使用方法

發(fā)布時間:2021-06-30 17:19:48 來源:億速云 閱讀:265 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“cookie跨域共享的使用方法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

問題描述

需要解決前端pc跟服務(wù)端(java),跨域后都能獲取到同一個cookie。
使用二級域名共享cookie有一個限制條件,就是兩個域名的二級域名必須相同

前端pc訪問域名:a.b.com
后端接口域名:a-gateway.b.com
這兩個域名同屬一個二級域名:b.com

跨域訪問

服務(wù)器nginx增加以下配置,即可解決跨域訪問的問題。也可以在程序中通過代碼解決跨域訪問。

  • nginx配置文件

location / {
    #是否允許跨域發(fā)送Cookie
    add_header Access-Control-Allow-Credentials true;
    add_header Access-Control-Allow-Origin 'http://a.b.com';
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

跨域攜帶發(fā)送cookie

如果需要允許跨域攜帶發(fā)送cookie的話,nignx則需要以下參數(shù)配置

  • nginx配置

  1. "Access-Control-Allow-Credentials":可選字段。它的值是一個布爾值,表示是否允許發(fā)送Cookie。默認(rèn)情況下,Cookie不包括在CORS請求之中。設(shè)為true,即表示服務(wù)器明確許可,Cookie可以包含在請求中,一起發(fā)給服務(wù)器。這個值也只能設(shè)為true,如果服務(wù)器不要瀏覽器發(fā)送Cookie,刪除該字段即可。

  2. 對于附帶身份憑證的請求,服務(wù)器不得設(shè)置 Access-Control-Allow-Origin 的值為'*'。這是因為請求的首部中攜帶了Cookie信息,如果 Access-Control-Allow-Origin 的值為'*',請求將會失敗。而將 Access-Control-Allow-Origin 的值設(shè)置為 http://a.b.com,則請求將成功執(zhí)行。也就是說Access-Control-Allow-Credentials設(shè)置為true的情況下 Access-Control-Allow-Origin不能設(shè)置為*。

  • 前端配置
    以vue請求為例:

import axios from 'axios';
axios.defaults.withCredentials=true //允許攜帶cookie
  • java設(shè)置cookie

public static void  addCookie(HttpServletResponse response,String cookieName,String cookieValue,int maxAge){
    Cookie cookie  =new Cookie(cookieName,cookieValue);
    cookie.setDomain("b.com");//指定域名
    cookie.setPath("/");//設(shè)置cookie的生命周期
    cookie.setHttpOnly(false);
    if(maxAge>0){
        cookie.setMaxAge(maxAge);
    }
    response.addCookie(cookie);
}

“cookie跨域共享的使用方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI