美文网首页
以实际经验解决 cookie 跨站问题

以实际经验解决 cookie 跨站问题

作者: 无题syl | 来源:发表于2024-02-28 14:26 被阅读0次

在前端开发工作中遇到问题

在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地址相同就可以
跨域: 大家看我给你链接即可(标注:来自他人)

解决

  1. 因为cooike存在跨站问题 后台设置权限时候可以考虑其他的 例如token
  2. 前端使用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/(.*)$;
}
}

相关文章

网友评论

      本文标题:以实际经验解决 cookie 跨站问题

      本文链接:https://www.haomeiwen.com/subject/noffzdtx.html