Loading...
Loading...
Guides developers through configuring HTTP headers security in Tauri v2 applications, covering security headers, custom headers, and CORS configuration for secure cross-origin resource handling.
npx skill4agent add dchuk/claude-code-tauri-skills configuring-tauri-http-headersAccess-Control-Allow-CredentialsAccess-Control-Allow-HeadersAccess-Control-Allow-MethodsAccess-Control-Expose-HeadersAccess-Control-Max-AgeCross-Origin-Embedder-PolicyCross-Origin-Opener-PolicyCross-Origin-Resource-PolicyX-Content-Type-OptionsPermissions-PolicyTiming-Allow-OriginService-Worker-AllowedTauri-Custom-Headerapp.security.headerssrc-tauri/tauri.conf.json{
"app": {
"security": {
"headers": {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp",
"X-Content-Type-Options": "nosniff"
}
}
}
}{
"app": {
"security": {
"headers": {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp",
"Cross-Origin-Resource-Policy": "same-origin",
"Timing-Allow-Origin": [
"https://example.com",
"https://api.example.com"
],
"X-Content-Type-Options": "nosniff",
"Permissions-Policy": {
"camera": "()",
"microphone": "()",
"geolocation": "(self)"
},
"Access-Control-Allow-Methods": ["GET", "POST", "PUT", "DELETE"],
"Access-Control-Allow-Headers": ["Content-Type", "Authorization"],
"Access-Control-Max-Age": "86400"
},
"csp": "default-src 'self'; connect-src ipc: http://ipc.localhost"
}
}
}SharedArrayBuffer{
"app": {
"security": {
"headers": {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp"
}
}
}
}{
"app": {
"security": {
"headers": {
"Cross-Origin-Resource-Policy": "same-origin",
"Access-Control-Allow-Credentials": "false",
"Access-Control-Allow-Methods": ["GET"],
"Access-Control-Max-Age": "3600"
}
}
}
}{
"app": {
"security": {
"headers": {
"Cross-Origin-Resource-Policy": "cross-origin",
"Access-Control-Allow-Methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
"Access-Control-Allow-Headers": ["Content-Type", "Authorization", "X-Requested-With"],
"Access-Control-Expose-Headers": ["Content-Length", "X-Request-Id"],
"Access-Control-Max-Age": "86400"
}
}
}
}// vite.config.ts
import { defineConfig } from 'vite';
export default defineConfig({
server: {
headers: {
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp',
'X-Content-Type-Options': 'nosniff'
}
}
});// angular.json
{
"projects": {
"your-app": {
"architect": {
"serve": {
"options": {
"headers": {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp"
}
}
}
}
}
}
}// nuxt.config.ts
export default defineNuxtConfig({
vite: {
server: {
headers: {
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp'
}
}
}
});// 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'
}
]
}
];
}
};# Trunk.toml
[serve]
headers = { "Cross-Origin-Opener-Policy" = "same-origin", "Cross-Origin-Embedder-Policy" = "require-corp" }| Value | Description |
|---|---|
| Default, allows opener access |
| Isolates browsing context to same-origin |
| Same-origin but allows popups |
| Value | Description |
|---|---|
| Default, no restrictions |
| Requires CORP or CORS for cross-origin resources |
| Cross-origin requests without credentials |
| Value | Description |
|---|---|
| Only same-site requests |
| Only same-origin requests |
| Allows cross-origin requests |
{
"X-Content-Type-Options": "nosniff"
}{
"Permissions-Policy": {
"camera": "()",
"microphone": "()",
"geolocation": "(self)",
"fullscreen": "(self)"
}
}tauri.conf.jsonSharedArrayBufferapp.security.csp{
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp"
}tauri.conf.json{
"Access-Control-Allow-Methods": ["GET", "POST", "OPTIONS"],
"Access-Control-Allow-Headers": ["Content-Type", "Authorization"]
}{
"Access-Control-Expose-Headers": ["X-Custom-Header", "X-Request-Id"]
}app.security.csp