Add per-domain toggle to disable automatic HTTP redirect following in the Native and Agent interceptors. When disabled, requests return the redirect response (status code, headers, body) without following the Location header. Previously HTTP redirects were always followed (on browser, can't do much about that, see https://fetch.spec.whatwg.org/#atomic-http-redirect-handling) without option to inspect the redirect response itself. This prevented developers from accessing redirect metadata needed when testing OAuth flows (PKCE where intermediate responses contain authorization tokens), authentication endpoints that return codes in Location headers with 302 status, and debugging API redirect chains. But on the desktop app, redirects were just never followed, creating the opposite effect. The browser's fetch API applies atomic HTTP redirect handling per spec, making it impossible to intercept redirects and inspect their responses. The Native and Agent interceptors use curl and native HTTP clients respectively, both supporting redirect control, making this feature viable for these specific interceptors. (Proxyscotch tbd). |
||
|---|---|---|
| .. | ||
| dist-js | ||
| guest-js | ||
| permissions | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| LICENSE.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| rollup.config.js | ||
| tsconfig.json | ||
Tauri Plugin: Relay
A HTTP request-response relay plugin for Tauri apps, providing advanced request handling capabilities including custom headers, certificates, proxies, and local system integration.
Features
- 🦀 Blazingly fast!
- HTTP client built on libcurl
- Security with SSL/TLS certificate management
- Proxy support
- Multiple authentication methods (Basic, Bearer, Digest)
- Content handling (JSON, Form Data, Binary)
- Async request execution with cancellation support
Installation
Important
This plugin requires Tauri 2.0 or later.
Add the plugin to your project by installing directly from GitHub:
[dependencies]
tauri-plugin-relay = { git = "https://github.com/CuriousCorrelation/tauri-plugin-relay" }
"dependencies": {
"@CuriousCorrelation/plugin-relay": "github:CuriousCorrelation/tauri-plugin-relay"
}
Quick Start
Rust
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_relay::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
JavaScript/TypeScript
import { execute, cancel } from '@CuriousCorrelation/plugin-relay'
// Execute a request
const result = await execute({
id: 1,
url: "https://api.example.com/data",
method: "POST",
headers: {
"Content-Type": ["application/json"]
},
content: {
kind: "json",
content: { hello: "world" }
}
})
// Cancel a request
await cancel(1)
Content Types
The plugin supports multiple content types for requests:
| Type | Description |
|---|---|
text |
Plain text content |
json |
JSON data with automatic parsing |
form |
Multipart form data with file support |
binary |
Raw binary data with optional MIME type |
urlencoded |
URL-encoded form data |
Authentication
Built-in support for various authentication methods:
| Method | Description |
|---|---|
basic |
Basic HTTP authentication |
bearer |
Bearer token authentication |
digest |
Digest authentication (MD5, SHA-256, SHA-512) |
Security
The plugin provides extensive security options:
- Client certificate support (PEM, PKCS#12)
- Custom CA certificates
- Certificate validation control
- Host verification settings
Development
Requirements:
- Rust 1.77.2 or later
- Node.js 18 or later
- pnpm
- libcurl with SSL support
Error Handling
The plugin provides detailed error information for:
- Network failures
- Certificate issues
- Timeout scenarios
- Parse errors
- Request cancellations
License
Code: (c) 2024 - CuriousCorrelation
MIT or MIT/Apache 2.0 where applicable.