window.open()打开的跨域页面,能否通过js写入cookie?

代码如下,我执行该逻辑理想状态下直接进入 this.formData.url ;而实际上在登录页被挡住了,查看过页面的cookie,并没有我设置的token

this.formData.urlhttps://200.200.5.5这种格式。

token已验证过是正确的,试过手动在网站通过js添加cookie然后刷新,可行

之前有人实现过该功能,代码雷同,不知道是不是我姿势不对

async login () {
    let token = await this.getToken();

    if (!token) {
        return;
    }

    console.log(token);
    // token=TEllnRx61o7yixQ8icuis7frmzvZWF/x
    
    document.cookie = `${token}; path=/; domain=${this.formData.url}; expires=${new Date().getTime() + (1000 * 60)};`;
    
    let newWin = window.open();
    newWin.location.href = this.formData.url;
},
阅读 13.7k
6 个回答

写入 cookie 时域名是受限的,你只能在当前域写入 cookie,请求的时候浏览器会自动从当前域获取 cookie 并发送,所以你不能操作其它域的 cookie,怎么操作都不行。

如果是跨域这样应该解决不了,一般还是传参过去,在另一边做处理,

独立网站的话就没什么办法了。讲道理他不会让你这样随便设置的。

如果可以设置会有什么危害?

  1. 你正在充钱,我把你的cookie改了,改成了我的账号
  2. 无法快捷登录,因为 cookie 被其他地方篡改了。甚至说所有网页都无法登录了,因为cookie被一个页面强制覆盖了。
  3. 要是能读就更坑了,万一有敏感信息不就都暴露了?

两个不同域名地址,跨域了cookie是不能共享的

不论是SeesionStorge,Localstoge,cookie都无法跨域。

统一回复,前端跨域写cookie,不可行。之前被实现的方案是个误会,访问的是反向代理的地址。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏