话不多说,一个字,干!
  
  前端配置如下:
  
  axios.defaults.withCredentials = true; //配置为tru
  
  openid: 'oJ0mVw4QrfS603gFa_uAFDADH2Uc',
  
  date: '2018-11-21'
  
  }).then(function (response) {
  
  console.log(response)
  
  })
  
  前端配置withCredentials = true 后端的跨域也需要配置
  
  app.use(async (ctx, next) => {
  
  ctx.set('Access-Control-Allow-Origin', ctx.request.header.origin);
  
  ctx.set('Access-Control-Allow-Credentials', true);
  
  await next();
  
  });
  
  //防止每次请求都返回Access-Control-Allow-Methods以及Access-Control-Max-Age,
  
  //这两个响应头其实是没有必要每次都返回的,只是第一次有预检的时候返回就可以了。
  
  app.use(async (ctx, next) => {
  
  if (ctx.method === 'OPTIONS') {
  
  ctx.set('Access-Control-Allow-Methods', 'PUT,DELETE,POST,GET');
  
  ctx.set('Access-Control-Max-Age', 3600 * 24);
  
  ctx.body = '';
  
  }
  
  await next();
  
  });
  
  前端全栈学习交流圈:866109386,面向1-3经验年前端开发人员,帮助突破技术瓶颈,提升思维能力,群内有大量PDF可供自取,更有干货实战项目视频进群免费领取。
  
  实例展示完了,我们来讲讲都是怎么回事
  
  **withCredentials:**默认情况下,跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)。通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据。
  
  默认值为false。
  
  true:在跨域请求时,会携带用户凭证
  
  false:在跨域请求时,不会携带用户凭证;返回的 response 里也会忽略 cookie
  
  当配置了 withCredentials = true时,必须在后端增加 response 头信息Access-Control-Allow-Origin,且必须指定域名,而不能指定为*!!!
  
  那么问题就来了,若是多个域名呢? 我配置的是任意域名都可以访问,但是这样并不安全。建议做法是创建一个数组,每次去检测域名是否在数组内,存在则继续
  
  讲到这里了,那么延伸一下 post请求下的options
  
  options 它是一种探测性的请求,通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。
  
  前台跨域post请求,由于CORS(cross origin resource share)规范的存在,浏览器会首先发送一次options嗅探,同时header带上origin,判断是否有跨域请求权限,服务器响应access control allow origin的值,供浏览器与origin匹配,如果匹配则正式发送post请求。
  
  每一次非简单请求都会实际上发出两次请求,一次预检一次真正请求,这就比较损失性能了。
  
  // 样式相关的测试用例
  
  it('icon 默认的 order 是 1', () => {
  
  const wrapper = mount(Button, {
  
  propsData: {
  
  icon: 'setting'
  
  }
  
  })
  
  const vm = wrapper.vm
  
  const icon = vm.$el.querySelector('svg')
  
  expect(getComputedStyle(icon).order).to.eq('1')
  
  })
  
  复制代码
  
  在查看了 Vue Test Utils 的文档之后。查询到有一个属性 attachToDocument: true, 可以设置,试着把元素放置到 DOM 之中。
  
  复制代码
  
  // 样式相关的测试用例 添加 attachToDocument: true 属性之后
  
  it('icon 默认的 order 是 1', (www.fengshen157.com/) => {
  
  const wrapper = mount(www.gcyl158.com Button, {
  
  attachToDocument: true,
  
  propsData: {
  
  icon: 'setting'
  
  }
  
  })
  
  const vm = wrapper.vm
  
  const icon = vm.$el.querySelector(www.gcyL157.com'svg')
  
  expect(getComputedStyle(www.haitianguo.cn icon).order).to.eq('1')
  
  })
  
  复制代码
  
  但我添加了之后,仍然无法通过测试。根本原因仍旧是没有使用 Karma 打开浏览器进行测试。
  
  解决过程
  
  配置 package.json
  
  在 package.json 中添加依赖配置,如下图。
  
  安装依赖
  
  使用如下命令安装之前 package.json 中添加的依赖。
  
  yarn add -D karma karma-chrome-launcher www.mingrenf178.com karma-mocha karma-sourcemap-loader karma-spec-reporter karma-webpack chai sinon sinon-chai
  
  创建 karma.config.js
  
  在 Vue Cli 3 的官方文档 webpack 相关章节中,可以查询到 Vue Cli 3 将 webpack.config.js 藏到了一个地方,即 /node_modules/@vue/cli-service/webpack.config.js。
  
  所以就有了2图的中间件。 Access-Control-Max-Age: 86400 设置一个相对时间,在该非简单请求在服务器端通过检验的那一刻起,当流逝的时间的毫秒数不足Access-Control-Max-Age时,就不需要再进行预检,可以直接发送一次请求。

axios携带cookie配置详解(axios+koa) 原的更多相关文章

  1. Tomcat 优化方案 和 配置详解(转)

    转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...

  2. PHP的核心配置详解

    1.PHP核心配置详解 代码在不同的环境下执行的结果也会大有不同,可能就因为一个配置问题,导致一个非常高危的漏洞能够利用:也可能你已经找到的一个漏洞就因为你的配置问题,导致你鼓捣很久都无法构造成功的漏 ...

  3. web缓存服务器varnish-4.1.6的部署及配置详解

    web缓存服务器varnish-4.1.6的部署及配置详解 1.安装varnish4.1.6安装依赖 yum install -y autoconf automake jemalloc-devel l ...

  4. Nginx 反向代理工作原理简介与配置详解

    Nginx反向代理工作原理简介与配置详解   by:授客  QQ:1033553122   测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...

  5. Tomcat安装及配置详解

    Tomcat安装及配置详解   一,Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Found ...

  6. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  7. 缓存varnish的管理及配置详解

    一 工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp ...

  8. Web.xml配置详解(转)

    Web.xml配置详解 Posted on 2010-09-02 14:09 chinaifne 阅读(295105) 评论(16) 编辑 收藏 1 定义头和根元素 部署描述符文件就像所有XML文件一 ...

  9. Log4j配置详解(转)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

随机推荐

  1. `Facebook.Unity.Settings' has already been imported error solution

    after import facebook sdk to unity, i get the '`Facebook.Unity.Settings' has already been imported' ...

  2. 「日常训练」Queue(Codeforces Round 303 Div.2 D)

    简单到让人不敢相信是D题,但是还是疏忽了一点. 题意与分析 (Codeforces 545D) 题意:n人排队,当一个人排队的时间超过他需要服务的时间就会厌烦,现在要求一个最优排列使得厌烦的人最少. ...

  3. 第五模块·WEB开发基础-第2章JavaScript基础

    第1章 JavaScript基础 01-JavaScript历史介绍 02-JavaScript的组成 03-JavaScript的引入方式 04-变量的使用 05-基本数据类型(一) 06-基本数据 ...

  4. 那些年我们不爱学的mysql单词

    MySQL 一种关系型数据库 database 数据库,简称DB databases 数据库的复数,代表多个数据库 net 网络/服务 start 启动 stop 停止 root MySQL数据库中的 ...

  5. lintcode514 栅栏染色

    栅栏染色 我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染.必须保证不存在超过2个相邻的柱子颜色相同,求有多少种染色方案. 注意事项 n和k都是非负整数 您在真实的面试中是否遇到过这个 ...

  6. [SHELL]退出脚本

    一,退出状态码 1,范围:0~255 2,查看退出状态码:必须在命令执行之后立即执行 ,显示的是脚本最后一条命令的退出状态码 echo $? 若f返回值为0,则表示正常 有异常为正值 二,exit 脚 ...

  7. Java进阶知识点:更优雅地关闭资源 - try-with-resource

    一.背景 我们知道,在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们.因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制, ...

  8. NMAP-高级用法

    1.报文分段 2.偏移 –mtu后面的数字是8的倍数 3.源端口欺骗 4.指定报文长度 5.ttl 6.mac地址伪造 0代表随机伪造 7.正常输出 8.输出为xml 9.输出为grep 10.输出所 ...

  9. 浏览器中event.srcElement和event.target的兼容性问题

    在IE下,event对象有srcElement属性,但是没有target属性:Firefox下,even对象有target属性,但是没有srcElement属性.. 解决方法:使用obj(obj = ...

  10. lintcode-142-O(1)时间检测2的幂次

    142-O(1)时间检测2的幂次 用 O(1) 时间检测整数 n 是否是 2 的幂次. 样例 n=4,返回 true; n=5,返回 false. 挑战 O(1) time 标签 比特位操作 思路 使 ...