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

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

image.png

最近公司的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')


目录
相关文章
|
2月前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
2月前
自动检查以确保依赖项始终与使用的electron版本相匹配的小技巧
自动检查以确保依赖项始终与使用的electron版本相匹配的小技巧
30 0
|
12天前
|
存储 安全 关系型数据库
安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用&后台模块&Session&Cookie&Token&身份验证&唯一性
安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用&后台模块&Session&Cookie&Token&身份验证&唯一性
|
11月前
|
JSON 缓存 安全
跨域时怎么处理 cookie?
跨域时怎么处理 cookie?
|
前端开发 JavaScript
electron入门(16.0版本亲测可用)
electron入门全记录,亲测可用
125 1
|
存储 监控 JavaScript
如何治理 Electron 版本淘宝直播应用崩溃?
如何治理 Electron 版本淘宝直播应用崩溃?
11449 0
|
Web App开发 JavaScript 前端开发
【跨域】一篇文章彻底解决跨域设置cookie问题!
之前做项目的时候发现后端传过来的 SetCookie 不能正常在浏览器中使用。是因为谷歌浏览器新版本Chrome 80将Cookie的SameSite属性默认值由None变为Lax。接下来带大家解决该问题。
2809 0
|
存储 监控 JavaScript
如何治理 Electron 版本淘宝直播应用崩溃?
经过几个月的努力,基于Electron框架开发的新版淘宝直播推流软件终于上线了。随之而来的就是线上用户反馈的各种问题,其中最影响用户体验的当属应用崩溃问题了。当应用程序出现未 catch 的异常时就会发生崩溃,本文介绍了客户端应用崩溃的处理流程。
891 0
如何治理 Electron 版本淘宝直播应用崩溃?
|
19天前
|
存储 编解码 应用服务中间件
会话跟踪技术(Session 以及Cookie)
会话跟踪技术(Session 以及Cookie)
|
27天前
|
存储 前端开发 小程序
表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序
表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序