From 5a51142cfeeb2a3aa428a49ef8b50141bf16489c Mon Sep 17 00:00:00 2001 From: Maciej Pienczyn Date: Fri, 10 Apr 2026 06:56:24 +0200 Subject: [PATCH] fix: sendBeacon 415 error - wrap payload in Blob with application/json navigator.sendBeacon() with a string sends text/plain Content-Type, causing Flask to reject with 415 Unsupported Media Type. Co-Authored-By: Claude Opus 4.6 (1M context) --- static/js/analytics-tracker.min.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/static/js/analytics-tracker.min.js b/static/js/analytics-tracker.min.js index 922ee6d..e61047e 100644 --- a/static/js/analytics-tracker.min.js +++ b/static/js/analytics-tracker.min.js @@ -69,12 +69,12 @@ type: 'page_time', page_view_id: currentPageViewId, time_seconds: timeOnPage }); -navigator.sendBeacon(TRACK_ENDPOINT, data); +navigator.sendBeacon(TRACK_ENDPOINT, new Blob([data], {type: 'application/json'})); if (maxScrollDepth > 0) { -navigator.sendBeacon(SCROLL_ENDPOINT, JSON.stringify({ +navigator.sendBeacon(SCROLL_ENDPOINT, new Blob([JSON.stringify({ page_view_id: currentPageViewId, scroll_depth: maxScrollDepth -})); +})], {type: 'application/json'})); } } function handleVisibilityChange() {