gpt4 book ai didi

cookies - 通过webRequest.onBeforeSendHeaders设置自定义 header 时, Electron 应用程序内iframe中的Cookie停止工作

转载 作者:行者123 更新时间:2023-12-03 12:28:16 25 4
gpt4 key购买 nike

我在加载外部网址的 Electron 应用程序(v6.1.2)中有一个iframe。我需要使用自定义 header 加载该URL,因此我使用webRequest.onBeforeSendHeaders()来拦截请求并插入该 header 。一旦将requestHeaders传递给callback参数,iframe中的cookie就会停止工作。
main.js中的:

import { remote } from 'electron'
// the constant MY_URL used below contains the extarnal URL
const webRequest = remote.getCurrentWindow().webContents.session.webRequest;
webRequest.onBeforeSendHeaders(
{
urls: [`${MY_URL}*`]
},
(details, callback) => {
// I need to clone details.headers, as simply setting
// details.headers['X-MY-CUSTOM-HEADER']
// won't work
let requestHeaders = Object.assign({}, details.headers);
requestHeaders['X-MY-CUSTOM-HEADER'] = '1'
// even if I set requestHeaders to details.headers, the issue persists.
// only removing the requestHeaders property from the object below will make it work again:
callback({ cancel: false, requestHeaders });
},
['blocking', 'requestHeaders'] // doesn't make a difference,
// and I didn't find anything cookie-related for the "extraInfoSpec" argument
);

目标URL上的PHP脚本:

<?php
session_start();
var_dump(session_id());
var_dump($_COOKIE);
exit;
?>

该脚本在应用或iframe每次刷新时的(伪)输出是这样的:
string(26) "(random PHP session ID different on every call here)" array(0) { }

如果从上面的 requestHeaders中的回调参数中删除 main.js属性,则输出将如期输出:PHP session ID保持不变,并且目标站点设置的所有cookie都将保留。这就是我知道这在PHP方面不是问题的方式。我还可以排除 X-MY-CUSTOM-HEADER本身在干扰,因为即使根本不更改 header (请参见代码注释),问题仍然存在。

我是否缺少某些东西,或者这是 Electron 中的错误?有没有办法解决?

最佳答案

原来这是一个相当愚蠢的错误,但是由于很难找到有关此API的任何文档,因此我倾向于不以简单的错字形式将其关闭,因为我认为这可能会对其他人有所帮助。
details对象具有headers属性和requestHeaders属性。我实际上不确定有什么区别,因为似乎有些重叠。我正确地覆盖了requestHeaders,但是这样做是为了扩展details.headers而不是details.requestHeaders。所以我要做的就是改变

let requestHeaders = Object.assign({}, details.headers);


let requestHeaders = Object.assign({}, details.requestHeaders);

关于cookies - 通过webRequest.onBeforeSendHeaders设置自定义 header 时, Electron 应用程序内iframe中的Cookie停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com