Python HTTP 库 urllib3 支持直接在浏览器运行

来源: OSCHINA
编辑:
2024-01-31 11:22:00

Python HTTP 库 urllib3 最新版本 2.2.0 新增了一项重磅特性——可直接在浏览器运行

根据介绍,从 2.2.0 开始,urllib3 支持在 Pyodide 运行时中使用 JavaScript fetch API,或者在 fetch API 不可用时(例如当跨源隔离未激活时)返回 XMLHttpRequest。这意味着开发者可以使用该库直接从浏览器发出 HTTP 请求。

由于 urllib3 的 Emscripten 支持与 API 兼容,这意味着依赖于 urllib3 的库现在也可以在 Emscripten 和 Pyodide 环境中使用。

此外,urllib3 已初步支持 HTTP/2,与此同时其团队正在筹集更多资金(大约 4 万美元)来完成该功能。他们表示这笔资金能确保项目在 2023 年财务支持急剧下降后获得长期可持续维护。

https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support

详情查看 Release Notes

展开阅读全文
点击加入讨论🔥(7) 发布并加入讨论🔥
本篇精彩评论
目前似乎还是不行,urllib3的wasm里面发送的网络请求,在开发者工具network里面还是可以看到,type时xhr,依然会有跨域的问题,仔细看 https://urllib3.readthedocs.io/en/stable/reference/contrib/emscripten.html#features 里面的说明
Features which don’t work with Emscripten:
Proxies, both forwarding and tunneling
Customizing TLS and certificates (uses browsers’ configuration)
Configuring low-level socket options or source address
2024-01-31 22:45
2
举报
尝试了一下,还真可以,wow,打开了新世界的大门,只是这种方式会多加载几MB的网络js/wasm资源,还需要python的wasm;
要是可以在wasm的网络连接里面支持设置代理(browser的fetch目前是不支持设置代理的),那么理论上纯C实现的更精简版的js/wasm应该也可以,有时间尝试自己写一个看看。

参考资料
1. https://urllib3.readthedocs.io/en/stable/reference/contrib/emscripten.html#getting-started
2. https://www.zenrows.com/blog/urllib3-proxy#set-a-urllib3-proxy
2024-01-31 22:39
2
举报
那支持在browser中设置类似于node fetch的 proxy agent 么,最近再看通过代理方式解决cors问题时想到的问题,如果支持,那解决请求第三方api的跨域问题可以优雅简洁一些了
2024-01-31 22:15
2
举报
7 评论
2 收藏
分享
返回顶部
顶部