[electron][WIP] 协议:添加 requestHttpJob 方法

2024-05-11 313 views
2

修复#1793

回答

8

@deepak1556 它也适用于 https 吗?

3

它的 PR 不完整,只是暂时添加了 http 方案,也可以允许其他方案,但需要确认 api 将如何使用。除了URL请求标头之外还会传递哪些参数?

7

URL 对于我的用例来说就足够了,但是是的。 requestHeaders 会很酷。另外,如果我通过拦截并执行 requestHttpJob 来重写 url,http 请求是否会包含所有 cookie 和其他内容?

0

http请求会包含所有cookies之类的东西吗?

不,它是一个全新的请求上下文,如果需要这些数据,则必须在传递request给拦截器处理程序的对象中提供它们,目前尚未完成。

8

哎哟。在请求对象中传递该数据有多困难?可以在这个 PR 或单独的 PR 中完成吗?

0

@zcbenz 没有依赖于从 Http 工厂创建作业,而是采用了更通用的方法。想法?

1

嘿@deepak1556,是否可以修改发送客户端证书的新请求?这将对解决我的问题大有帮助(https://github.com/atom/electron/issues/1221)。我不确定我是否遵循了此更改允许您执行的操作,所以我可能是错的!

0

@kjlaw89是的,这是可能的,因为请求对象上有挂钩来提供证书。但这只是正确解决方案的一种变通方法。

4

@deepak1556 如果它能让我获得客户端证书,我不介意解决方法!哈哈。正确的解决方案是什么?

请注意,我对客户端证书的需求有点不同。我不想要他们的标准浏览器弹出窗口。我们将在我们的应用程序中提供证书,我希望能够直接使用本地证书而不是从系统存储中使用,以使我们的客户的事情变得更简单。

7

@kjlaw89 nodejs请求模块是否支持客户端证书?因为如果是这样,另一个 PR 中的新异步作业将为您执行此操作。

8

我相信 https.request 确实如此,我不知道 http.request 是否如此。

0

请求模块构建在本机 http 模块之上,因此如果本机支持该模块,我很确定它也支持。

8

我们在谈论https://github.com/request/request吗?如果是这样,是的,它确实支持它,所以这会起作用。我想我只需要等待 PR 通过,看看它是否适合我!谢谢!

2

您可以使用URLFetcher来实现更简单、更安全的实现,当前的实现会泄漏net::URLRequest对象。

7

@zcbenz URLFetcher 应该使用什么类型的编写器?我正在考虑使用文件编写器到临时位置并用它启动文件作业。或者获取字符串形式的响应并启动缓冲区作业?

1

@deepak1556 :-1:用于将文件写入临时位置并用它启动文件作业,:+1:用于缓冲区作业。因为我们可以通过它及时获取诸如 did-get-response-details 等事件。我们不必等待整个文件加载。

4

您可以实现自定义URLFetcherResponseWriter并将数据读入某些缓冲区DrainableIOBuffer,然后实现ReadRawData流式传输数据。重要的是流式传输数据而不是一次读取所有数据,否则它将无法处理对大文件的请求。

另一种选择是使用 来实现URLRequestHttpJob::Factory,但您还必须至少覆盖以下方法才能AdapterRequestJob使其工作: https://code.google.com/p/chromium/codesearch#chromium/src/net/url_request/url_request_http_job.h&sq =程序包:chromium&type=cs&l=52 https://code.google.com/p/chromium/codesearch#chromium/src/net/url_request/url_request_http_job.h&sq=程序包:chromium&type=cs&l=103

3

它的 PR 不完整,只是暂时添加了 http 方案,也可以允许其他方案,但需要确认 api 将如何使用。除了 URL、请求标头之外,还会传递哪些参数?

对我来说,我只是将其用作 URL 重定向类型的东西,没什么花哨的

3

@paulcbetts 这也是我的基本用例。

伙计们,如果能早点实现这一点就好了,因为它是我项目的障碍。

3

以#1995 结束。