Changeset 9effb80 in Klonkt


Ignore:
Timestamp:
06/21/2026 04:37:18 PM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
421c2d4
Parents:
015ce46
Message:

fix(editor): CSP blocked blob: image → empty edit dialog

img-src was missing blob:, so the Cropper <img> (URL.createObjectURL → blob:)
was silently blocked by CSP → no image visible. Added blob: to img-src (media-src
already had it for audio). + onerror fallback in the editor: if the image fails
to load, the original is uploaded instead of getting stuck.

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

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/server.js

    r015ce46 r9effb80  
    105105      scriptSrcAttr: ["'unsafe-inline'"],
    106106      styleSrc: ["'self'", "'unsafe-inline'"],
    107       imgSrc: ["'self'", "data:", "https:"],
     107      // blob: nodig voor de afbeeldings-editor (Cropper) — die toont de gekozen
     108      // foto via een URL.createObjectURL(blob:…). Zonder blob: blokkeert de CSP
     109      // de <img> stil → leeg bewerk-venster. (media-src heeft blob: al voor audio.)
     110      imgSrc: ["'self'", "data:", "https:", "blob:"],
    108111      connectSrc: ["'self'", "wss:", "ws:", "https://*.spotifycdn.com", "https://*.scdn.co"],
    109112      // blob: is required for the audio player — it fetch()es track bytes and
  • src/views/pages/post-edit.ejs

    r015ce46 r9effb80  
    11021102        cropper = new Cropper(img, { viewMode: 1, autoCropArea: 1, background: false, responsive: true });
    11031103      };
     1104      img.onerror = () => { cleanup(); resolve(file); }; // kon niet laden → upload het origineel
    11041105      img.src = url;
    11051106
Note: See TracChangeset for help on using the changeset viewer.