HTTP 头
自 src-tauri/tauri.conf.json
vite.config.ts
angular.json
nuxt.config.ts
next.config.js
Trunk.toml
2.1.0 版本起
在配置中定义的头部会随响应一同发送给 webview。这不包含 IPC 消息和错误响应。更具体地说,通过 get_response 函数在 crates/tauri/src/protocol/tauri.rs ↗ 中发送的每一个响应都将包含这些头部。
头部名称限制为
- Access-Control-Allow-Credentials ↗
- Access-Control-Allow-Headers ↗
- Access-Control-Allow-Methods ↗
- Access-Control-Expose-Headers ↗
- Access-Control-Max-Age ↗
- Cross-Origin-Embedder-Policy ↗
- Cross-Origin-Opener-Policy ↗
- Cross-Origin-Resource-Policy ↗
- Permissions-Policy ↗
- Service-Worker-Allowed ↗
- Timing-Allow-Origin ↗
- X-Content-Type-Options ↗
- Tauri-Custom-Header
- 使用字符串
- 使用字符串数组
- 使用对象/键值对,其中值必须是字符串
- 使用 null
头部值在实际响应中总是被转换为字符串。根据配置文件的编写方式,某些头部值需要进行组合。以下是组合创建的规则:
string:在结果头部值中保持不变array:各项通过,连接以形成结果头部值key-value:各项由“键 + 空格 + 值”组成。然后各项通过;连接以形成结果头部值null:该头部将被忽略
{ //... "app":{ //... "security": { //... "headers": { "Cross-Origin-Opener-Policy": "same-origin", "Cross-Origin-Embedder-Policy": "require-corp", "Timing-Allow-Origin": [ "https://mdn.org.cn", "https://example.com", ], "X-Content-Type-Options": null, // gets ignored "Access-Control-Expose-Headers": "Tauri-Custom-Header", "Tauri-Custom-Header": { "key1": "'value1' 'value2'", "key2": "'value3'" } }, // notice how the CSP is not defined under headers "csp": "default-src 'self'; connect-src ipc: http://ipc.localhost", } }}在此示例中,Cross-Origin-Opener-Policy 和 Cross-Origin-Embedder-Policy 被设置为允许使用 SharedArrayBuffer ↗。Timing-Allow-Origin 允许从所列网站加载的脚本通过 资源计时 API (Resource Timing API) ↗ 访问详细的网络计时数据。
对于 helloworld 示例,此配置的结果为
access-control-allow-origin: http://tauri.localhostaccess-control-expose-headers: Tauri-Custom-Headercontent-security-policy: default-src 'self'; connect-src ipc: http://ipc.localhost; script-src 'self' 'sha256-Wjjrs6qinmnr+tOry8x8PPwI77eGpUFR3EEGZktjJNs='content-type: text/htmlcross-origin-embedder-policy: require-corpcross-origin-opener-policy: same-origintauri-custom-header: key1 'value1' 'value2'; key2 'value3'timing-allow-origin: https://mdn.org.cn, https://example.com某些开发环境需要额外的设置来模拟生产环境。
对于运行构建工具 Vite 的设置(包括 Qwik、React、Solid、Svelte 和 Vue),请将所需的头部添加到 vite.config.ts 中。
import { defineConfig } from 'vite';
export default defineConfig({ // ... server: { // ... headers: { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Timing-Allow-Origin': 'https://mdn.org.cn, https://example.com', 'Access-Control-Expose-Headers': 'Tauri-Custom-Header', 'Tauri-Custom-Header': "key1 'value1' 'value2'; key2 'value3'" }, },})有时 vite.config.ts 会被集成到框架的配置文件中,但设置方式保持不变。对于 Angular,请将其添加到 angular.json 中。
{ //... "projects":{ //... "insert-project-name":{ //... "architect":{ //... "serve":{ //... "options":{ //... "headers":{ "Cross-Origin-Opener-Policy": "same-origin", "Cross-Origin-Embedder-Policy": "require-corp", "Timing-Allow-Origin": "https://mdn.org.cn, https://example.com", "Access-Control-Expose-Headers": "Tauri-Custom-Header", "Tauri-Custom-Header": "key1 'value1' 'value2'; key2 'value3'" } } } } } }}对于 Nuxt,请添加到 nuxt.config.ts 中。
export default defineNuxtConfig({ //... vite: { //... server: { //... headers:{ 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp', 'Timing-Allow-Origin': 'https://mdn.org.cn, https://example.com', 'Access-Control-Expose-Headers': 'Tauri-Custom-Header', 'Tauri-Custom-Header': "key1 'value1' 'value2'; key2 'value3'" } }, },});Next.js 不依赖于 Vite,因此方法有所不同。点击此处 ↗阅读更多相关信息。头部在 next.config.js 中定义。
module.exports = { //... async headers() { return [ { source: '/*', headers: [ { key: 'Cross-Origin-Opener-Policy', value: 'same-origin', }, { key: 'Cross-Origin-Embedder-Policy', value: 'require-corp', }, { key: 'Timing-Allow-Origin', value: 'https://mdn.org.cn, https://example.com', }, { key: 'Access-Control-Expose-Headers', value: 'Tauri-Custom-Header', }, { key: 'Tauri-Custom-Header', value: "key1 'value1' 'value2'; key2 'value3'", }, ], }, ] },}对于 Yew 和 Leptos,请将头部添加到 Trunk.toml 中。
#...[serve]#...headers = { "Cross-Origin-Opener-Policy" = "same-origin", "Cross-Origin-Embedder-Policy" = "require-corp", "Timing-Allow-Origin" = "https://mdn.org.cn, https://example.com", "Access-Control-Expose-Headers" = "Tauri-Custom-Header", "Tauri-Custom-Header" = "key1 'value1' 'value2'; key2 'value3'"}© 2026 Tauri 贡献者。CC-BY / MIT