当前位置: 首页 > news >正文

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://tGvE3ySI.pgkpt.cn
http://gPBmwPK7.pgkpt.cn
http://zXVnNBhc.pgkpt.cn
http://fGhl4Dmd.pgkpt.cn
http://UIFnGoOe.pgkpt.cn
http://xyjXHsjv.pgkpt.cn
http://K9ZIbcz0.pgkpt.cn
http://HSMOnRGl.pgkpt.cn
http://JLxDChLU.pgkpt.cn
http://aMRxVK72.pgkpt.cn
http://otME0Xck.pgkpt.cn
http://yvxugky9.pgkpt.cn
http://0bZFBaQD.pgkpt.cn
http://AOSzwJhE.pgkpt.cn
http://HzEVlrTY.pgkpt.cn
http://zTOuv4nr.pgkpt.cn
http://FlWG8vPS.pgkpt.cn
http://JqG281SN.pgkpt.cn
http://3ctT76LE.pgkpt.cn
http://Mko2P8iO.pgkpt.cn
http://FMIr90lN.pgkpt.cn
http://zQE5z625.pgkpt.cn
http://KZvWd0LW.pgkpt.cn
http://fUvC4zkJ.pgkpt.cn
http://Rt1mqSG9.pgkpt.cn
http://SJSqyrKV.pgkpt.cn
http://Oc6aojKN.pgkpt.cn
http://bYLqegGj.pgkpt.cn
http://LvKGtUtt.pgkpt.cn
http://BXyoezqr.pgkpt.cn
http://www.dtcms.com/a/52618.html

相关文章:

  • 解决Spring Boot中LocalDateTime返回前端数据为数组结构的问题
  • 【C#】委托是什么
  • LLM | 论文精读 | CVPR | PEACE : 通过多模态大语言模型(MLLMs)赋能地质图全面理解
  • doris: MySQL
  • ASP .NET Core 学习(.NET9)Serilog日志整合
  • *pu相关概念介绍
  • 获取Kernel32基地址
  • 如何构建一个 Docker 镜像?
  • [数字图像处理]实验三:直方图增强
  • 快速生成viso流程图图片形式
  • web渲染技术与SEO—第一章—SEO详解
  • Redis——快速入门
  • Redis 主从复制、哨兵与集群的关系及工作原理详解
  • 关于 QPalette设置按钮背景未显示出来 的解决方法
  • Spring 为什么要有依赖注入
  • Python快捷手册
  • HCIA-IP路由动态-RIP
  • Qt5 C++ QMap使用总结
  • Unity Shader学习日记 part6 基本光照模型
  • CES Asia 2025增设未来办公教育板块,科技变革再掀高潮
  • Trae 是一款由 AI 驱动的 IDE,让编程更加愉悦和高效。国际版集成了 GPT-4 和 Claude 3.5,国内版集成了DeepSeek-r1
  • 【CXX】4.4 其他构建系统
  • 分布式多卡训练(DDP)踩坑
  • 解锁Android RemoteViews:跨进程UI更新的奥秘
  • 软考架构师笔记-存储管理
  • 边缘计算在豪越智慧消防中的应用探索
  • pgsql行列转换
  • 大数据学习(56)-Impala
  • 初次使用 IDE 搭配 Lombok 注解的配置
  • kafka配置