#tauri-plugin #fetch #cors #tauri-app #desktop-applications #unofficial #resources

sys tauri-plugin-cors-fetch

在Tauri应用程序内启用Fetch请求的跨源资源共享(CORS)

10个稳定版本

2.1.1 2024年3月25日
2.0.0 2024年3月24日
1.3.1 2024年3月25日

#4 in #cors

MIT许可证

41KB
381

tauri-plugin-cors-fetch

crates.io Documentation MIT licensed

一个非官方的Tauri插件,它可以在Tauri应用程序中无缝启用跨源资源共享(CORS)。

概述

当使用Tauri构建跨平台桌面应用程序时,我们经常需要访问像OpenAI这样的服务,这些服务在Web环境中受到跨源资源共享(CORS)策略的限制。

然而,在桌面端,我们可以绕过CORS并直接访问这些服务。虽然官方的tauri-plugin-http可以绕过CORS,但它需要修改您的网络请求,可能不与依赖于标准fetch API的第三方依赖项兼容。

工作原理

此插件通过在网页初始化期间挂钩浏览器的本地fetch方法来扩展官方的tauri-plugin-http。它透明地将请求重定向到tauri-plugin-http,允许您使用标准fetch API而无需进行额外的代码更改或解决方案。

安装

  1. 将插件添加到Tauri项目依赖项中
# src-tauri
cargo add tauri-plugin-cors-fetch
  1. 在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");
}
  1. 在您的capabilities配置中添加权限
// src-tauri/capabilities/default.json
{
  "permissions": ["cors-fetch:default"]
}
  1. 在您的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");

限制

  1. 不支持自定义CSP策略:默认情况下,所有HTTP/HTTPS请求将被重定向到本地原生请求。
  2. 不支持XMLHttpRequest:此插件专门设计用于与现代fetch API一起工作,不支持XMLHttpRequest(XHR)请求。

许可证

本项目采用MIT许可证。

依赖项

~17–58MB
~1M SLoC