前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >electron升级到20版本后,禁用第三方cookie、跨域问题解决方法

electron升级到20版本后,禁用第三方cookie、跨域问题解决方法

原创
作者头像
wayn
发布2022-10-20 22:49:06
2.2K1
发布2022-10-20 22:49:06
举报
文章被收录于专栏:wayn的程序开发wayn的程序开发

最近公司的electron项目从13升级到最新的20版本,导致qq登录失效问题,特此记录

1. qq扫码登录失效

升级后之前的老版本可以扫码登录,但是新版本扫码登录后,页面直接刷新,没有登录成功。经过查看网络请求排查得出是由于新版本Cookie的SameSite限制导致,qq的第三方登录的某些接口在response里设置了cookie属性,却没有加上SameSite=None; Secure,直接导致qq第三方登录最后的登录验证接口读不到的response里设置的cookie属性,导致登录失效。

解决办法:

通过electron的webRequest对象在请求返回阶段加上SameSite=None; Secure,代码如下

代码语言:txt
复制
    const { app, session } = require('electron')
  app.whenRady().then(() => {
    session.defaultSession.webRequest.onHeadersReceived(
        { urls: ['*://*.qq.com/*'] },
        (details, callback) => {
          if (
              details.responseHeaders &&
              details.responseHeaders['Set-Cookie'] &&
              details.responseHeaders['Set-Cookie'].length &&
              !details.responseHeaders['Set-Cookie'][0].includes('SameSite=none')
          ) {
            for (var i = 0;i< details.responseHeaders['Set-Cookie'].length; i++) {
              details.responseHeaders['Set-Cookie'][i] += '; SameSite=None; Secure';
            }
          }
          callback({ cancel: false, responseHeaders: details.responseHeaders });
        },
    );
  })
2. qq一键登录跨域问题

升级后本机登录qq的pc客户端, 使用一键登录也失效了,经过查看控制台报错得出,是跨域安全问题导致。qq的本地一键登录,会通过内网网络请求访问本机的qq pc端,从而实现一键登录,但是升级到20版本后,这个内网网络请求被限制了。

解决办法:

加一行代码,禁用chromium的BlockInsecurePrivateNetworkRequests特性

代码语言:txt
复制
// 解决qq一键登录跨域问题
app.commandLine.appendSwitch('disable-features','BlockInsecurePrivateNetworkRequests')

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. qq扫码登录失效
    • 2. qq一键登录跨域问题
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档