diff --git a/web-app/src/lib/completion.ts b/web-app/src/lib/completion.ts index 9c81a4034..4d30f0750 100644 --- a/web-app/src/lib/completion.ts +++ b/web-app/src/lib/completion.ts @@ -182,6 +182,13 @@ export const sendCompletion = async ( 'X-Title': 'Jan', }, }), + // Add Origin header for local providers to avoid CORS issues + ...((provider.base_url?.includes('localhost:') || provider.base_url?.includes('127.0.0.1:')) && { + fetch: getServiceHub().providers().fetch(), + defaultHeaders: { + 'Origin': 'tauri://localhost', + }, + }), } as ExtendedConfigOptions) if ( diff --git a/web-app/src/services/providers/tauri.ts b/web-app/src/services/providers/tauri.ts index bd1751447..d1554e3cf 100644 --- a/web-app/src/services/providers/tauri.ts +++ b/web-app/src/services/providers/tauri.ts @@ -143,6 +143,12 @@ export class TauriProvidersService extends DefaultProvidersService { 'Content-Type': 'application/json', } + // Add Origin header for local providers to avoid CORS issues + // Some local providers (like Ollama) require an Origin header + if (provider.base_url.includes('localhost:') || provider.base_url.includes('127.0.0.1:')) { + headers['Origin'] = 'tauri://localhost' + } + // Only add authentication headers if API key is provided if (provider.api_key) { headers['x-api-key'] = provider.api_key