koa开发,登录相关cookie携带问题

koa设置cookie

const env = process.env.NODE_ENV;
ctx.cookies.set(`token_${env}`, token, {
        expires: new Date(Date.now() + 8 * 60 * 60 * 1000), // cookie失效时间
        path: '/', // 写cookie所在的路径
        maxAge: 17280000, // cookie有效时长
        domain: 'baidu.com', // 写cookie所在的域名, 不用“.”开头支持顶级域名下的所有子域名
        httpOnly: false, // 是否只用于http请求中获取,这样localhost就可以获取了
        overwrite: false // 是否允许重写
});

koa获取cookie

const env = process.env.NODE_ENV;
ctx.cookies.get(`token_${env}`)

设置cors

import * as koa from 'koa';
import * as koaJson from 'koa-json';
import * as koaLogger from 'koa-logger';
import * as koaCors from 'koa-cors';
// 此处业务相关,自己随便写
import router from './modules/router';
const koaOnerror = require('koa-onerror');
const koaBody = require('koa-body');
const app = new koa();
// error处理 - 错误后页面显示
koaOnerror(app);

// 跨域控制
app.use(
    koaCors({
        origin(evt) {
            // 此处不能用*号,前端需要携带cookie
            return evt.header.origin;
        },
        expose: ['Content-Type', 'WWW-Authenticate', 'Server-Authorization'],
        maxAge: 5,
        credentials: true,
        methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
        // 此处不能用*号,前端需要携带cookie
        headers: 'Origin, X-Requested-With, Content-Type, Accept'
    })
);

// 文件上传下载控制
app.use(
    koaBody({
        multipart: true,
        formidable: {
            maxFileSize: 1000 * 1024 * 1024
        }
    })
);

// 处理json
app.use(koaJson());

// 路由注册
app.use(router.routes());
app.use(router.allowedMethods());

// 错误处理
app.on('error', (err, ctx) => {
    console.error('server error', err, ctx);
});

// 日志处理
app.use(koaLogger());

app.listen(6666);

前端axios 设置

import axios from 'axios';
const service = axios.create({
    withCredentials: true
});

前端umi-request 设置

import { extend } from 'umi-request';
const fetch = extend({
    timeout: 10000, // 默认超时时间
    errorHandler, // 默认错误处理
    credentials: 'include' // 默认请求是否带上cookie
});

注意:

  • nginx不要设置跨域相关配置
  • koaCors origin|headers如果使用*,fetch|axios就无法设置credentials,前端会报错

你可能感兴趣的:(koa开发,登录相关cookie携带问题)