使用axios跨域访问的问题总结

尝试使用axios的JS库访问superset系统的api,由于存在登陆后才能get的问题,所有的请求都需要先登陆。登陆的逻辑很简单,访问登陆表单的时候服务端会发来一个cookie,当登陆后客户端就会记住这个cookie,服务端通过这个cookie来辨识用户。

 

默认roadhog有一个代理的功能,可以将访问本地localhost的请求发送到跨域的其他api,由于这个不好用尝试使用了直接使用服务端的地址

 

问题:

1,Option就是Cors的时候的一个“侦察兵”,浏览器在POST之前先发一个,期待收到

Access-Control-Allow-Origin:

http://10.0.31.116:8088

后续再发出真正的请求,因此直接用axios发出一个post会换成一个option

 

2,明明发了一个POST,为何发了一个GET

这个问题的关键是axios默认是不带cookie的,而要使用cookie则必须设置

withCredentials: false,

而cookie是在加载登陆表单的时候由Server侧来发出的。因此要获得一个cookie就需要先get。

另外开启这个认证再服务端必须进行两个设置

Access-Control-Allow-Credentials为true

Access-Control-Allow-Origin:是一个具体的IP(不能为*)

研究了一下superset背后的FLASK

ENABLE_CORS = True
CORS_OPTIONS = {'supports_credentials':True}

有这两项设置

../lib/python3.6/site-packages/superset/config.py

另外还需要关掉xsrf的配置,否则会导致登陆不成功

修改后就能登陆成功

 

问题:从network当中观察,仍然看不到cookie的具体值

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值