HTTP请求,cookie和session以及跨域相关内容

我们都知道HTTP协议是无状态的。而无状态会导致每次请求都是独立的,没有上下关系,很多时候我们需要一个有状态的连接。这个时候就出现了cookie和session

cookie和session用来保存一些用户信息的,本身不属于HTTP协议,是浏览器和服务端默认实现的。cookie存储于浏览器端,session存放于服务端。当浏览器第一次发送请求时,服务器自动生成了一个Session ID用来唯一标识这个会话,然后把sessionId返回给浏览器,后续的会话中浏览器cookie带上这个sessionId,服务端则识别为这是同一个会话。

再说跨域,跨域源于同源策略,是浏览器的一个安全机制。从一个源加载的文档或者脚本默认不能访问另一个源的资源。例如a.com/111/html页面不能访问b.com/person这种接口,因为他们是不用的源。解决方法有比如设置CORS,或者代理。这里推荐使用代理,CORS处理的不好会导致cookie丢失(比如未指定origin,或者指定为*等等)。

最后说下项目中实际碰到的情况:

前后端分离开发,前端vue,后端springboot。实际开发中很容易会碰到跨域和会话丢失(因为跨域后cookie对应的URL不一致)这两种情况,这种情况可以通过代理来解决这2个问题。

proxyTable: {
      '/api':{
          target:'http://192.168.11.241:9011/',
          changeOrigin:true,
          pathRewrite:{
              '^/api': '/'
          },
          cookiePathRewrite:{
              '/': '/api'
          }
      }
    }

上面这个配置的意思是,将访问 localhost(vue项目的URL):port/api/下的ajax请求通过代理发送到192.168.11.241:9011/。这样的话,请求和会话实际是浏览器端和前端服务器之间的,不涉及跨域。而前端又做了处理,将Ajax请求以及cookie代理发送到后端服务器,这样就避免了上面出现的两种情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值