koa-session設置Cookie后獲取不到

在谷歌瀏覽器中請求獲取不到cookie問題之一(谷歌安全策略)

場景

前端使用 axios 請求,項目地址:http://192.168.8.1:5173

import axios from 'axios'const request = axios.create({baseURL: 'http://127.0.0.1:3001/',timeout: 60000,headers: {['Content-Type']: 'application/x-www-form-urlencoded'},withCredentials: true
})request.interceptors.request.use((req) => {return req},(err) => {return err}
)request.interceptors.response.use((res) => {return res},(err) => {return err.response}
)export default request

后端使用 koa + cors中間件 + koa-session中間件,配置了跨域,接口地址:127.0.0.1:3001

const Koa = require('koa')
const session = require('koa-session')
const cors = require('@koa/cors')const app = new Koa()app.use(cors({origin: 'http://192.168.8.1:5173',allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],allowHeaders: ['Content-Type', 'Authorization', 'Accept'],credentials: true})
)app.keys = ['test']
const CONFIG = {key: 'koa.sess1',maxAge: 2 * 60 * 60 * 1000,secure: false
}
app.use(session(CONFIG, app))app.use((ctx) => {if (ctx.request.url === '/set') {ctx.session.user = 'test666'ctx.body = 'ok'} else if (ctx.request.url === '/get') {console.log(ctx.session.user)ctx.body = ctx.session.user}
})app.listen(3001, () => {console.log('start server 3001')
})

問題

請求成功后,后端設置cookie成功,但前端瀏覽器響應中攜帶的cookie后面會有個(三角感嘆號),后端也無法獲取cookie(后端獲取到的cookie是undefined)

?解決

把前端項目地址改為?:http://127.0.0.1:5173

(也可以前端做代理訪問)

?

?后端修改跨域配置為前端新地址

const Koa = require('koa')
const session = require('koa-session')
const cors = require('@koa/cors')const app = new Koa()app.use(cors({origin: 'http://127.0.0.1:5173',allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],allowHeaders: ['Content-Type', 'Authorization', 'Accept'],credentials: true})
)// ...

也就是項目ip與請求ip保持一致(端口可以不用),這時瀏覽器請求響應后面的感嘆號就會消失,后端就能獲取到設置的cookie;

注意:

修改后要清除瀏覽器緩存,再刷新查看;否則很容易出現誤導(吃過虧)

總結

此問題在360極速瀏覽器中測試時正常,在谷歌瀏覽器測試時才出現,后查閱資料了解谷歌自51版本后改了cookie安全策略;

以上問題為本地開發時出現,線上暫未部署測試

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71468.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單元測試與仿真程序之間的選擇

為什么寫這篇文章 現在的工作需求,讓我有必要總結和整理一下。 凡事都有適用的場景。首先這里我需要提示一下,這里的信息,可能并不普適。 但是可以肯定一點的是,有些人,不論做事還是寫書,上下文還沒有交待…

如何在Android中實現圖片加載和緩存

在Android中實現圖片加載和緩存是提升應用性能和用戶體驗的關鍵環節。高效的圖片加載和緩存策略能夠減少內存占用、避免應用卡頓,并快速響應用戶的圖片查看需求。以下是在Android中實現圖片加載和緩存的幾種常見方法: 一、使用第三方圖片加載庫 1. Gli…

FusionInsight MRS云原生數據湖

FusionInsight MRS云原生數據湖 1、FusionInsight MRS概述2、FusionInsight MRS解決方案3、FusionInsight MRS優勢4、FusionInsight MRS功能 1、FusionInsight MRS概述 1.1、數據湖概述 數據湖是一個集中式存儲庫,允許以任意規模存儲所有結構化和非結構化數據。可以…

推薦幾款優秀的PDF轉電子畫冊的軟件

當然可以!以下是幾款優秀的PDF轉電子畫冊的軟件推薦,內容簡潔易懂,這些軟件都具有易用性和互動性,適合不同需求的用戶使用。? ? FLBOOK|在線創作平臺 支持PDF直接導入生成仿真翻頁電子書。提供15主題模板與字體庫&a…

【GoTeams】-2:項目基礎搭建(下)

本文目錄 1. 回顧2. Zap日志3. 配置4. 引入gprc梳理gRPC思路優雅關閉gRPC 1. 回顧 上篇文章我們進行了路由搭建,引入了redis,現在來看看對應的效果。 首先先把前端跑起來,然后點擊注冊獲取驗證碼。 再看看控制臺輸出和redis是否已經有記錄&…

深度學習反向傳播

一、白話解釋 梯度其實就是導數,除了用符號求導也可以用近似求導: 然后更新ww-學習率*導數 反向傳播就是鏈式求導 向前計算:對每個節點求偏導 在前向傳播的時候,進行一次前向計算的時候就可以把每一條線的偏導數都知道 前向傳…

JavaWeb-HttpServletRequest請求域接口

文章目錄 HttpServletRequest請求域接口HttpServletRequest請求域接口簡介關于請求域和應用域的區別 請求域接口中的相關方法獲取前端請求參數(getParameter系列方法)存儲請求域名參數(Attribute系列方法)獲取客戶端的相關地址信息獲取項目的根路徑 關于轉發和重定向的細致剖析…

deepseek在pycharm 中的配置和簡單應用

對于最常用的調試python腳本開發環境pycharm,如何接入deepseek是我們窺探ai代碼編寫的第一步,熟悉起來總沒壞處。 1、官網安裝pycharm社區版(免費),如果需要安裝專業版,需要另外找破解碼。 2、安裝Ollama…

AAA協議:從零認識網絡的“身份管家”

AAA(Authentication, Authorization, Accounting,認證、授權和計費)是網絡世界的“身份管理員”,負責確認“你是誰”、決定“你能干啥”、記錄“你干了啥”。如果你用過華三的交換機或路由器,可能在配置用戶管理時見過…

動態規劃01背包問題系列一>最后一塊石頭的重量II

這里寫目錄標題 題目分析:狀態表示:狀態轉移方程:初始化:填表順序:返回值:代碼呈現:優化版本:代碼呈現: 題目分析: 狀態表示: 狀態轉移方程&#…

逐行拆解 C 語言:數據類型、變量

今日,我們即將踏上一段充滿趣味與挑戰的學習之旅,深度鉆研數據類型的多樣奧秘,解鎖變量創建的實用技巧。不僅如此,還會邂逅兩個實用的基礎庫函數,探索它們在程序中穿針引線的奇妙作用。同時,幾個簡潔卻強大…

【音視頻】ffplay簡單過濾器

一、ffplay簡單過濾器 視頻旋轉:借助transpose濾鏡 ffplay -i 1.mp4 -vf transpose1這里選擇不同的數字是不同的方向: 視頻翻轉:借助hflip/vflip實現水平和垂直翻轉: 水平翻轉 ffplay 1.mp4 -vf hflip垂直翻轉 ffplay 1.mp4 …

springboot中注解有什么用

注解(Annotation)是 Java 的一個重要特性,我用幾個具體例子來解釋: 1、標記功能 Service // 告訴Spring這是一個服務類 public class UserService { }Data // 告訴Lombok自動生成getter/setter public class User {private…

Excel中COUNTIF用法解析

COUNTIF 是 Excel 中一個非常實用的函數,用于統計滿足某個條件的單元格數量。它的基本語法如下: 基本語法 COUNTIF(范圍, 條件) 范圍:需要統計的單元格區域,例如 A1:A10 或整列 A:A。 條件:用于判斷哪些單元格需要被…

java根據List<Object>中的某個屬性排序(數據極少,順序固定)

public static void main(String[] args) { List<HashMap<String, Object>> dydj new ArrayList<>(); // 模擬原始數據 HashMap<String, Object> map1 new HashMap<>(); map1.put(“city_name”, “張家口”); map1.put(“wjs”, 0); map1.put…

4G工業路由器在公交充電樁中的應用與優勢

隨著電動公交車的普及&#xff0c;公交充電樁的穩定運行和高效管理是交通營運部門最關心的問題。4G工業路由器憑借其卓越的數據采集和通訊能力&#xff0c;成為實現充電樁智能化管理的關鍵。 公交充電樁運維管理需求概述&#xff1a; 1.實時性&#xff1a;實時監控充電狀態、剩…

利用golang embed特性嵌入前端資源問題解決

embed嵌入前端資源&#xff0c;配置前端路由的代碼如下 func StartHttpService(port string, assetsFs embed.FS) error {//r : gin.Default()gin.SetMode(gin.ReleaseMode)r : gin.New()r.Use(CORSMiddleware())// 靜態文件服務dist, err : fs.Sub(assetsFs, "assets/di…

【LangChain 數據連接封裝】 文檔加載器、文檔處理器

小結&#xff1a; 文檔處理部分&#xff0c;建議在實際應用中詳細測試后使用與向量數據庫的鏈接部分本質是接口封裝&#xff0c;向量數據庫需要自己選型類似 LlamaIndex&#xff0c;LangChain 也提供了豐富的 Document Loaders DocumentLoaders和 Text Splitters Text Splitte…

Springboot集成dubbo完整過程(三)

準備工作 1&#xff0c;準備mysql服務環境2&#xff0c;準備redis服務環境3&#xff0c;準備zookeeper服務環境4&#xff0c;準備逆向生成bean的xml配置文件5&#xff0c;準備slf4j日志xml配置文件6&#xff0c;準備一個sql腳本 1&#xff0c;搭建創建服務工程 1&#xff0c;創…

【DeepSeek 】學習編程的利器:DeepSeek 使用指南

學習編程的利器&#xff1a;DeepSeek 使用指南 如果你正苦于如何開始學習 Python/R/Linux/HTML 語法&#xff0c;這個方法或許是你學習過程中的利器&#xff0c;又不用考慮請教真人&#xff0c;麻煩別人。 學習階段 第一階段&#xff1a;通讀語法書籍 第一步通讀一些相關語法…