feat(api): CORS-Tür für POST /speak — OPTIONS-Preflight und ACAO aus Config
OPTIONS /speak beantwortet Preflights mit 204 + Allow-Headers/Methods/Max-Age, wenn die Origin in server.allowed_origins steht; ungeliste Origins und leere Liste bekommen keine CORS-Header (Browser blockt). Nur /speak, kein anderer Endpunkt. /status ergänzt additiv cors:[origins] (immer vorhanden, [] wenn zu).
This commit is contained in:
1 parent
cef6e6b9f2
commit
156c20dbb3
5 files changed
+174
-35
No files matched your search
+10
-1
@@ -55,7 +55,8 @@ type CurrentItem struct {
|
||||
// Item (null im Leerlauf), Mute-State, aktiver Provider, Daemon-Version.
|
||||
// QueueIDs ist die Ergänzung der wartenden IDs in Abarbeitungs-Reihenfolge
|
||||
// — die CLI braucht sie für ihr --wait-Polling. Task 05 ergänzt additiv
|
||||
// den Gesetz-State (rate_limit, quiet_hours).
|
||||
// den Gesetz-State (rate_limit, quiet_hours); Task 06 additiv mcp/cors
|
||||
// (Compat-Felder: MCP-Endpoint vorhanden, konfigurierte CORS-Origins).
|
||||
type StatusResponse struct {
|
||||
Version string `json:"version"`
|
||||
Queue int `json:"queue"`
|
||||
@@ -65,6 +66,14 @@ type StatusResponse struct {
|
||||
Provider string `json:"provider"`
|
||||
RateLimit *RateLimitState `json:"rate_limit,omitempty"`
|
||||
QuietHours *QuietHoursState `json:"quiet_hours,omitempty"`
|
||||
|
||||
// MCP meldet, dass der Daemon den MCP-Endpoint anbietet (immer true;
|
||||
// Feld existiert für additive Compat-Sicht von Clients/Browsern).
|
||||
MCP bool `json:"mcp"`
|
||||
|
||||
// Cors ist die konfigurierte CORS-Erlaubnisliste von POST /speak
|
||||
// (leeres [] = Tür zu). Immer vorhanden (auch leer), nicht omitempty.
|
||||
Cors []string `json:"cors"`
|
||||
}
|
||||
|
||||
// RateLimitState ist der Rate-Limit-State in GET /status (Task 05).
|
||||
|
||||
Reference in new issue
Block a user