在前端开发工作中遇到问题
在A项目中 打开B项目并直接登录B项目,但是B项目用到了cookie 从A里面打开B cooike不能够传递的问题,那怎么解决这个问题呢? A与B都是前端部署之后的地址
基础问题要先了解 因为我自己不知道😂
- 服务端设置了cooike 前端再次访问时候 是自带cooike的是吧?
是的,当服务端设置了 Cookie,并且在响应中携带了 Set-Cookie 头部信息时,浏览器在接收到响应后会存储这个 Cookie。当浏览器再次向同一域名发送请求时,会自动在请求头部中携带该域名下存储的所有 Cookie。这样服务器就能够通过读取请求头部中的 Cookie 来获取先前设置的相关信息。因此,在前端再次访问时,是自带了 Cookie 的。
- 什么是跨站? 什么是跨域?
跨域跨站知识参考博客
跨站:
Cookie受到同源策略的限制没有那么严格,默认情况下,只要发送请求方所在域与Cookie的Domain值相同即可将cookie发送至服务器端,无需考虑协议和端口号。在默认情况下,客户端发起的HTTP请求会带上目标域的Cookie,但无法携带其它属于其它的域Cookie。 也就是说ip地址相同就可以
跨域: 大家看我给你链接即可(标注:来自他人)
解决
- 因为cooike存在跨站问题 后台设置权限时候可以考虑其他的 例如token
- 前端使用nginx 代理
首先 B项目有个登录接口 在A项目中调用这个接口
window.zhibiaoUrl = http://10.12.3.104:8103
axios({
url:'/xlzy/login' //使用/xlzy 本地代理到 本地的另一个端口 这个端口在代理到B项目部署地址
}).then((data)=>{
window.open(window.zhibiaoUrl+'/跳转到B项目内部某页')
})
nginx 配置
server{
listen 8103;
server_name 10.12.3.104;
location /{
proxy_pass http://10.12.3.120:8803 //代理到B项目部署ip
}
}
server{
listen 8104; //A项目的部署 端口 可以修改
server_name 10.12.3.104; //A项目的部署ip 可为本地
loction /{
root html/dist;
index index.html index.htm
}
location /xlzy {
proxy_pass http://10.12..3.104:8103;
rewrite ^/xlzy/(.*)$;
}
}