最近遇到了前端跨域之withCredentials

问题描述:vue 本地开发环境是通过axios直接请求后台,生产环境采用nginx代理;今天本地开发被跨域请求的问题困扰了很久,

问题现象:

这次后台项目采用springcloudaliba gateway微服务。如果是html直接访问这个微服务,可以访问。但是如果通过网关微服务,来路由转发就不能访问。但是浏览器和Postman通过网关微服务都能访问,就是html不能通过网关访问

网上一大堆跨域,gateway vue axios跨域,自己也病急乱投医,各种试错,当看到https://segmentfault.com/q/1010000016904795 这兄弟总结5种解决方案别人也留言亲测可用,暗喜这下肯定搞定无疑,当shithappens的时候,觉得可能自己gateway代码有问题,因为是半拉子前端,是需要对知识采取负责任态度进行俯首甘为子牛吧,理解其概念,有时间不要留技术债了

跨域一句话的理解就是:服务端和请求端的地址不一样。

跨域的详细介绍可以参考:浏览器和服务器实现跨域(CORS)判定的原理https://blog.csdn.net/zmx729618/article/details/53319383),这里不多赘述。

 axios里面有一个配置项,遗传代码withCredentials,就是它之前设置true,本地设置要设置false,就解决跨域,也是看到下面这博客,才蒙然觉醒 这个设置啥意思,以后不懂的知识点一定要及时baidu/google弄清楚,记一次

vue项目中axios请求数据的时候请求失败,出现跨域问题。

withCredentials 属性

CORS请求默认不发送Cookie和HTTP认证信息。但是有的后台要把Cookie发到服务器,要服务器同意,指定Access-Control-Allow-Credentials字段。

在axios的配置文件中配置withCredentials属性,默认带cookie给后台,

import Axios from 'axios';

Axios.defaults.withCredentials=true;
————————————————
原文链接:https://blog.csdn.net/Zxiuping/article/details/102835425。

最后还是学习下“配置项解析”

配置服务器实现跨域传输

前面讲到了同源策略的基本判定,以及浏览器实现跨域判断的方式,那么,如何在服务器端做配置来允许跨域传输呢?下文将以Nginx为例,讲一下三种情况下的配置。

配置项解析

CORS常用的配置项有以下几个:

  • Access-Control-Allow-Origin(必含) – 允许的域名,只能填通配符或者单域名

  • Access-Control-Allow-Methods(必含) – 这允许跨域请求的http方法(常见有POSTGETOPTIONS

  • Access-Control-Allow-Headers(当预请求中包含Access-Control-Request-Headers时必须包含) – 这是对预请求当中Access-Control-Request-Headers的回复,和上面一样是以逗号分隔的列表,可以返回所有支持的头部。

  • Access-Control-Allow-Credentials(可选) – 该项标志着请求当中是否包含cookies信息,只有一个可选值:true(必为小写)。如果不包含cookies,请略去该项,而不是填写false。这一项与XmlHttpRequest2对象当中的withCredentials属性应保持一致,即withCredentials为true时该项也为true;withCredentials为false时,省略该项不写。反之则导致请求失败。

  • Access-Control-Max-Age(可选) – 以秒为单位的缓存时间。预请求的的发送并非免费午餐,允许时应当尽可能缓存。

有点闷闷的 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值