10个稳定版本
2.1.1 | 2024年3月25日 |
---|---|
2.0.0 | 2024年3月24日 |
1.3.1 | 2024年3月25日 |
#4 in #cors
41KB
381 行
一个非官方的Tauri插件,它可以在Tauri应用程序中无缝启用跨源资源共享(CORS)。
概述
当使用Tauri构建跨平台桌面应用程序时,我们经常需要访问像OpenAI这样的服务,这些服务在Web环境中受到跨源资源共享(CORS)策略的限制。
然而,在桌面端,我们可以绕过CORS并直接访问这些服务。虽然官方的tauri-plugin-http可以绕过CORS,但它需要修改您的网络请求,可能不与依赖于标准fetch
API的第三方依赖项兼容。
工作原理
此插件通过在网页初始化期间挂钩浏览器的本地fetch
方法来扩展官方的tauri-plugin-http。它透明地将请求重定向到tauri-plugin-http,允许您使用标准fetch
API而无需进行额外的代码更改或解决方案。
安装
- 将插件添加到Tauri项目依赖项中
# src-tauri
cargo add tauri-plugin-cors-fetch
- 在Tauri应用程序设置中初始化插件
// src-tauri/main.rs
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_cors_fetch::init())
.run(tauri::generate_context!())
.expect("failed to run app");
}
- 在您的
capabilities
配置中添加权限
// src-tauri/capabilities/default.json
{
"permissions": ["cors-fetch:default"]
}
- 在您的Tauri配置中启用
withGlobalTauri
// src-tauri/tauri.conf.json
{
"app": {
"withGlobalTauri": true
}
}
用法
安装和初始化插件后,您可以从Tauri应用程序开始进行fetch
请求,而不会遇到与CORS相关的错误。
// Enable CORS for the hooked fetch globally (default is true on app start)
window.enableCORSFetch(true);
// Use the hooked fetch with CORS support
fetch("https://example.com/api")
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error(error));
// Use the hooked fetch directly
window.hookedFetch("https://example.com/api");
// Use the original, unhooked fetch
window.originalFetch("https://example.com/api");
限制
- 不支持自定义CSP策略:默认情况下,所有HTTP/HTTPS请求将被重定向到本地原生请求。
- 不支持XMLHttpRequest:此插件专门设计用于与现代
fetch
API一起工作,不支持XMLHttpRequest
(XHR)请求。
许可证
本项目采用MIT许可证。
依赖项
~17–58MB
~1M SLoC