node(koa2)跨域与获取cookie

欲作一个node 的网关服务,经过 cookie 作信息传递,选择框架 koa2,这里简单记录跨域处理以及 cookie 获取。前端

 

首先:解决跨域问题,使用 koa2-cros 来处理,跨域问题后端处理就好,与前端无瓜。node

const cors = require('koa2-cros')

app.use(cors({
  origin: '*'
}))

 

其次:解决跨域是传递 cookie 问题,如今的浏览器请求默认都不带 cookie 的,要带上cookie 则须要添加配置参数,原生 fetch 方法须要添加 credentials: 'include' 参数,使用以下:ios

fetch('htp://192.168.210.151:3002/proxy', {
    credentials: 'include',
})
// 若是你用的 axios,请在配置参数中添加 withCredentials: true 参数便可

后端添加  credentails: true chrome

const cors = require('koa2-cros')

app.use(cors({
  origin: '*',
  credentails: true,
}))

而后新问题就出现了,浏览器发请求出现以下问题axios

意思就是 Access-Control-Allow-Origin: '*' 与 credentials: 'include' 不能共存,这里须要后端的请求头将 Access-Control-Allow-Origin: '*' 中的 '*' 改为发送请求的 origin 就行了,若是粗暴点的话直接改为以下后端

const cors = require('koa2-cros')

app.use(cors({
  origin: (ctx) => {
     const origin = ctx.headers.origin  // 实际生产请根据具体状况来进行规则配置
     return origin
  }
}))

 

而后的话客户端拿到的 Response Headers 对好比下跨域

 

最终,虽然仍是会出现 Provisional headers are shown 这个警告,可是前端也能够拿到数据了,后端也能够拿到 cookie 了。浏览器

 其余浏览器并无出现这个 Provisional headers are shown 警告,因此这个应该仅是 chrome 的一个警告。cookie

相关文章
相关标签/搜索