记一次跨域解决过程,除了Access-Control-Allow-Origin还有很多要做

177 阅读1分钟
第一步:提示跨域,后端加上 Access-Control-Allow-Origin:'xxx'
以为这样就解决了,依然报跨域,仔细查看控制台中的信息,后端加上Access-Control-Allow-Headers: 'cache-control'
没有报跨域了,但是登录不上反复跳转登录页,查看日志,发现session反复为空,查询知道是由于跨域不携带cookie,那么每次session_id都会发生变化,所以无法鉴权,于是前端加上withCredentials: true,后端加上Access-Control-Allow-Credentials', true,这样跨域可以携带cookie(此时Access-Control-Allow-Origin不允许设置为'*',必须是源地址)
现在可以成功登陆了,以为万事大吉,完事发现想新建测试又报错,查看控制台中的信息,后端改成Access-Control-Allow-Headers: 'cache-control, content-type',这是由于content-type: application/json
解决完啦。以前一直以为跨域做好第一步就好了,这次实际解决才发现要做的还不少,记录一下~
知识补充:
1.同源
同源是指,域名,协议,端口相同,所以只要有任何一个不同,就是跨域,也就是前后端部署在一台服务器的不同端口上,请求也会跨域。