Correcto, Obsidian es una aplicación Electron que se ejecuta localmente. Utiliza almacenamiento local, por lo que la clave API permanece en el dispositivo del usuario.
Resulta que hay una solución para el problema de CORS. Solo la he probado en mi ordenador de escritorio hasta ahora. ¡Además, Discourse es genial!
El código que publiqué anteriormente necesitaba ser modificado a:
import DiscoursePlugin from "./main";
import { requestUrl, TFile } from "obsidian";
//...
const response = await requestUrl({
url: url,
method: "POST",
contentType: "application/json",
body,
headers,
});
//...
La siguiente pregunta será sobre permitir a los usuarios solicitar claves API de usuario desde la aplicación, pero ese es un problema aparte.