eggjs踩坑之路 跨域cookie篇 - 前端劝退师

eggjs踩坑之路 跨域cookie篇

作者: 前端劝退师

全网最懒博主

手机扫码查看

标签:

nodejseggjs

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

接前文,本地搭建的一个vue应用,地址为127.0.0.1:8080。 后端代码运行在7001端口。之前已经完成了基本的通信功能,在中间件中设置了Access-Control-Allow-Origin为* ,可以实现跨域访问和jsonp。本次的功能是让前后端共同实现用户登陆信息记录的功能。 设计思路:

1.前端发起第一次get请求,请求主页内容。此时提示用户登陆,用户登陆使用post发送相应数据。后端收到数据并记录用户ID,设置到cookie中,返回给浏览器。浏览器记录此cookie 2.下次用户再请求主页时,浏览器会自动携带用户的cookie数据,此时后端直接返回该用户已登陆,给出相应返回码,前端收到后跳转界面

遇到的问题: 1跨域的cookie不能像正常cookie一样返回,浏览器会自动屏蔽,需要引入egg-cors插件,设置


credentials 跨域带脚本时该值设为true才能正常获得cookie 第二个值origin,有资料说只能设置成具体ip如127.0.0.1:8080 不能为*(通配符),原因不明 而且值得注意的是,localhost在很多时候不能和127.0.0.1公用,例如这种情况,直接访问localhost而不是ip会返回失败,建议本地测试时全部使用127.0.0.1。相应的前端在发送post请求时需要携带withCredentials为true标志允许跨站点脚本

2.前端第二次get请求时,抓包可以看到上送了cookie值,但是egg中读到undefined,这点在egg官网里没有提到,那就是如果你set cookie的时候附加了参数,比如设置httponly,那么get的时候需要传同样的参数才能返回结果

 

最后:直到现在请求的时候一直Provisional headers are shown

查到几个文档大都表示是浏览器拦截,或者本地缓存或者跨域访问。因为收到成功结果,所以排除拦截,经测试 关闭浏览器重启服务的第一笔就会这样返回 所以也不是本地缓存。 暂不理解为什么会这样显示,如果有大神知道其中原因,希望不吝赐教


作者:nightmareT
链接:https://juejin.im/post/5d3ac9856fb9a07ed740c4af
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

分享到:
打赏
未经允许不得转载:

作者: 前端劝退师, 转载或复制请以 超链接形式 并注明出处 前端劝退师
原文地址: 《eggjs踩坑之路 跨域cookie篇》 发布于2020-4-26

切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏