首页 > 其他分享 >electron升级到20版本后,禁用第三方cookie、跨域问题解决方法

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

时间:2022-10-20 22:59:46浏览次数:45  
标签:qq 20 跨域 登录 electron Cookie details responseHeaders

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

1. qq扫码登录失效

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

解决办法:

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

    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特性

// 解决qq一键登录跨域问题
app.commandLine.appendSwitch('disable-features','BlockInsecurePrivateNetworkRequests')

标签:qq,20,跨域,登录,electron,Cookie,details,responseHeaders
From: https://www.cnblogs.com/wayn111/p/16811649.html

相关文章

  • 2020长安杯复盘学习
    目录检材1检材2检材3检材4检材1在仿真软件里可以直接看到CentOSLinuxrelease7.6.1810(Core)在弘连里直接看,但要注意答题的格式要与参考格式一致3.10.0可......
  • Django 跨域CORS
    解决后端对跨域访问的支持。安装pipinstalldjango-cors-headers注册应用INSTALLED_APPS=[...,corsheaders,...]中间件设置MIDDLEWARE=[......
  • 2021-2022:时间戳
    转载:https://www.cnblogs.com/imyalost/p/15732730.html 博客今年博客更新的频次还行,一方面是工作上接触了很多新的领域,有很多的实践经验;另一方面,在新的公司,有部分工作......
  • P4097 [HEOI2013]Segment
    题目链接P4097[HEOI2013]Segment题目描述要求在平面直角坐标系下维护两个操作:在平面上加入一条线段。记第\(i\)条被插入的线段的标号为\(i\)。给定一个数\(k\),......
  • P8251 [NOI Online 2022 提高组] 丹钓战 题解
    本文写于2022-03-2614:45:14。原博客地址题目链接算法(倍增)$O((n+q)\logn)$为简便,把元素$(a_i,b_i)$称为元素$i$。对一个区间$[l,r]$模拟一遍,从空栈开始,头......
  • 10.20.1
    #include<stdio.h>intmain(){ intn,i,j,count=0; scanf("%d\n",&n); chararr[n+9]; gets(arr); for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++) {if(arr[j]>arr[j+1......
  • #yyds干货盘点#【愚公系列】2022年10月 微信小程序-sitemap站内搜索
    前言1.sitemap.json介绍开发者可以通过sitemap.json配置,或者管理后台页面收录开关来配置其小程序页面是否允许微信索引。2.小程序爬虫特征当开发者允许微信索引时,微信......
  • coin3d + vs2019 + win窗口程序安装
    背景:最近在做数字孪生仿真,需要用OpenInventor来实现。openinventor可以看做是openGL的包装,它是面向对象的,更适合快速开发。coin3d是openinventor的实现之一,sowin则......
  • VS2022创建Windows服务程序的方法步骤
    创建一个Windows服务程序可以创建Windows服务程序打开VS2022,新建项目。创建成功后的目录结构如左侧所示,至此项目构建完成。配置相关信息添加安装程序重新生......
  • P4158 [SCOI2009]粉刷匠
    题意:windy有N条木板需要被粉刷。每条木板被分为M个格子。每个格子要被刷成红色或蓝色。windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色。每个格......