axios携带cookie配置详解(axios+koa)


Posted in Javascript onDecember 28, 2018

话不多说,一个字,干!

前端配置如下:

axios.defaults.withCredentials = true; //配置为true
  
  axios.post('http://localhost:3000/tpzdz/vote/all', {
   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();
});

实例展示完了,我们来讲讲都是怎么回事

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请求。

每一次非简单请求都会实际上发出两次请求,一次预检一次真正请求,这就比较损失性能了。

所以就有了2图的中间件。 Access-Control-Max-Age: 86400

设置一个相对时间,在该非简单请求在服务器端通过检验的那一刻起,当流逝的时间的毫秒数不足Access-Control-Max-Age时,就不需要再进行预检,可以直接发送一次请求。

但是为什么会有两个中间件的设置呢,推荐文章 https://3water.com/article/135924.htm 很细致哦

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在VS2008中使用jQuery智能感应的方法
Dec 30 Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 Javascript
plupload+artdialog实现多平台上传文件
Jul 19 Javascript
Angularjs的ng-repeat中去除重复数据的方法
Aug 05 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
vue.js在标签属性中插入变量参数的方法
Mar 06 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
实例介绍JavaScript中多种组合继承
Jan 20 Javascript
Vue实现搜索结果高亮显示关键字
May 28 Javascript
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
微信小程序日历/日期选择插件使用方法详解
Dec 28 #Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
Dec 28 #Javascript
微信小程序时间控件picker view使用详解
Dec 28 #Javascript
微信小程序时间选择插件使用详解
Dec 28 #Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 #Javascript
Angular6新特性之Angular Material
Dec 28 #Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 #Javascript
You might like
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
python3.5仿微软计算器程序
2020/03/30 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
详解python UDP 编程
2020/08/24 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
上海微创软件面试题
2012/06/14 面试题
儿媳婚宴答谢词
2014/01/14 职场文书
综合实践活动方案
2014/02/14 职场文书
员工工作及收入证明
2014/10/28 职场文书
书法社团活动总结
2015/05/07 职场文书
毕业证明模板
2015/06/19 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书