fix: documentos recibidos en chat devuelven 401

Las URLs de CDN de WhatsApp (lookaside.fbsbx.com) requieren Authorization Bearer.
chat_get_messages.php las exponía directamente al browser, que no puede añadir
ese header, resultando en 401 "Authentication Error".

Ahora siempre se enrutan por /api/version/media-url.php (proxy existente) que:
- Sirve el archivo local si existe en disco
- Hace fetch con el token de WA si no está en local
- No requiere sesión para peticiones GET del browser

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-03 17:30:02 -05:00
co-authored by Claude Sonnet 4.6
parent 12c790fb5c
commit 34c6d2e643
+7 -5
View File
@@ -75,13 +75,15 @@ try {
$earliestId = $rows[0]['id'] ?? null; $earliestId = $rows[0]['id'] ?? null;
$data = array_map(function($m) { $data = array_map(function($m) {
$mediaUrl = $m['media_url'] ?? null; $mediaUrl = $m['media_url'] ?? null;
$external = null; $localFile = $m['local_file'] ?? null;
if ($mediaUrl) { $external = null;
if ($mediaUrl && !$localFile) {
// WhatsApp CDN URLs require Bearer token — always proxy through media-url.php
if (preg_match('#^https?://#i', $mediaUrl)) { if (preg_match('#^https?://#i', $mediaUrl)) {
$external = $mediaUrl; $external = '/api/version/media-url.php?url=' . urlencode($mediaUrl);
} else { } else {
$external = '../../../api/get_media.php?id=' . urlencode($mediaUrl); $external = '/api/version/media-url.php?id=' . urlencode($mediaUrl);
} }
} }
return [ return [