【问题标题】:Electron Webview get responseElectron Webview 得到响应
【发布时间】:2019-08-24 07:27:15
【问题描述】:

我对电子很陌生,所以我可能会搞错。

我们内部有一些网络应用程序都可以正常工作,我想通过将其中一个构建到电子中来练习。

我需要做的是在应用程序中加载我们的 SSO 登录页面,然后在身份验证成功后侦听要创建的 cookie/会话。

我正在使用这样的网络视图:

<div style="width:100%; height:100%">
    <span class="loading loader" id="loading" name="loading"></span>
    <webview class="ssologin" src="https://example.com/resources/ldap.php" autosize="on" style="min-width:755px; min-height:640px"></webview>
</div>

这会加载 ldap/sso 的登录页面。在我登录后,它通常会将您带到您将要访问的 Web 应用程序,然后再将您重新路由到 SSO,因为没有有效的会话。

我正在尝试弄清楚如何侦听 cookie/会话,以便我知道他们已经过身份验证并且我们会收到回复。

基本上,我需要这个有效的会话,以便将来在应用程序中对端点进行 API 调用,所以我想尝试使用这个现有的身份验证实现,而不必包含其他模块并搞砸所有这些。

有什么建议吗?

【问题讨论】:

  • autosize 属性是什么?!?!

标签: node.js webview electron


【解决方案1】:

以防万一你不知道:Electron 目前不推荐使用&lt;webview&gt;

我们目前建议不要使用 webview 标签并考虑替代方案,例如 iframe、Electron 的 BrowserView 或完全避免嵌入内容的架构。

参见https://electronjs.org/docs/api/webview-tag#warning

您可能需要在&lt;webview&gt; 上设置一个分区:

<webview src="https://github.com" partition="persist:github"></webview>
<webview src="https://electronjs.org" partition="electron"></webview>

设置页面使用的会话。如果分区以 persist: 开头,则页面将使用可用于应用程序中具有相同分区的所有页面的持久会话。如果没有 persist: 前缀,页面将使用内存中的会话。通过分配同一个分区,多个页面可以共享同一个会话。如果未设置分区,则将使用应用程序的默认会话。

参见https://electronjs.org/docs/api/webview-tag#partition

这样您就可以(从主进程)访问会话的 cookie:

const {session} = require('electron');
const sess = session.fromPartition('persist:foobar');
const cookies = sess.cookies;

然后您可以在该 cookie 对象上侦听 changed 事件:

当 cookie 因添加、编辑、删除或过期而发生更改时发出。

cookies.on('change', () => {
  // do something when your SSO cookie is set
});

参见https://electronjs.org/docs/api/cookies#event-changed

【讨论】:

  • 我总是收到错误cannot read property fromPartition of undefined :/
  • any idea 如何捕获webview 的请求/响应?
猜你喜欢
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 2017-07-19
  • 2021-06-27
相关资源
最近更新 更多