解决:post请求不携带cookie;以及cookie的坑

起因

  • 小徐和朋友决心搭建一个网站,小徐负责前端,后端的话,域名已经申请完毕,一些接口也已经做好了。小徐在本机使用vuecli开发。
  • 由于localhost和网站存在跨域,需要设置代理:proxy:"https://www.t2c.site"(坑所在,待会详讲!)

代码部分:


问题描述

  • 需要post请求发送account、password、checkCode到后端,但由于无法携带cookie 验证码一直比对错误
  • 已经按网上方法设置:(依旧无济于事)
前端main.js:axios.defaults.withCredentials=true;

后端已设置:Access-Control-Allow-Credentials: true

解决方法

就是补全域名!!!

 
 this.axios.post('https://www.t2c.site/user/login'

三个请求地址必须补全,缺一不可。

原理解析

  • 这是因为cookie的domain引起,可以看到domain在后端设置为www.t2c.site;这规定了这个cookie只有在请求域名为www.t2c.site时才会被携带发送到后端

  • 而我们起初的的requseturl仍为hocalhost
  • 这就说明即使使用proxy代理,请求url如果不补齐的话,默认仍是本地的请求
  • proxy代理后虽然能访问到验证码图片,却不会改变request url。(这里我也没太懂proxy代理的原理,只是猜想。如果有错,希望大佬指出)

  • 所以只要补全request url就能确保携带url

验证

  • 如果补全img_src和axios请求的url,就能自动识别request url,并携带cookie信息过去

结语

  • 最终能解决这个困扰了一天多问题,真的很激动。于是写下了这篇文章。
  • 希望大佬不吝赐教,平时只有另一个小伙伴,两个人举步维艰。
  • 有很多原理都只是猜想,没来得及查阅文献。如果有错,希望大家指出!

你可能感兴趣的:(代理,post,cookie,axios,前端)