Changeset a5caa73 in Klonkt for src


Ignore:
Timestamp:
08/16/2026 05:10:36 PM (3 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
1019a90
Parents:
749605a
Message:

Audio-stream: CORP cross-origin, zodat externe spelers echt kunnen afspelen (prutfolio-src-ap6)

Helmets default Cross-Origin-Resource-Policy: same-origin stond ook op
/audio/stream/*, en daarmee weigert de browser de bytes aan een
cross-origin <audio>-element: het bestand komt aan, de speler blijft
stil. Precies de les die /media al geleerd had -- de stream-route was
toen vergeten. En het zijn juist DEZE URLs die we in federatieve
Audio-objecten adverteren om elders (Funkwhale, de hub) afgespeeld te
worden. WIE mag ophalen beslist de fedi_open-poort, niet CORP.

Gemeten op hub.klonkt.com: /audio/stream/* speelde niet (same-origin),
de oude /media/migrated/*.mp3 wel (cross-origin). Na de fix op
dev.klonkt.com geverifieerd: de header staat er en de stream speelt
cross-origin.

Co-Authored-By: Claude Fable 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/audio.js

    r749605a ra5caa73  
    147147  res.setHeader('Content-Type', mime);
    148148  res.setHeader('Accept-Ranges', 'bytes');
     149  // Same lesson /media already learned: Helmet's default CORP is same-origin,
     150  // and the browser then refuses to hand a cross-origin <audio> the bytes —
     151  // the file arrives, the player stays silent. These URLs are precisely what
     152  // we advertise in federated Audio objects (Funkwhale, the hub) to be played
     153  // elsewhere; WHO may fetch is decided by the gate above, not by CORP.
     154  res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
    149155  // Allow the browser to cache the file for a day so play/pause/replay
    150156  // doesn't re-fetch the whole stream every time. `private` keeps it out of
Note: See TracChangeset for help on using the changeset viewer.