story-research-zapwall/fixKnowledge/nostrimg-html-response-error.md
2026-01-05 22:51:30 +01:00

126 lines
4.7 KiB
Markdown

# Problème : nostrimg.com retourne du HTML au lieu de JSON
## Date
2025-01-27
## Problème
L'endpoint `https://nostrimg.com/api/upload` retourne une page HTML au lieu d'une réponse JSON lors des tentatives d'upload.
## Symptômes
- Erreur 500 lors des appels à `/api/nip95-upload?endpoint=https://nostrimg.com/api/upload`
- Message d'erreur : `"Invalid upload response: Unexpected token '<', \"\n<!DOCTYPE \"... is not valid JSON"`
- Les uploads vers nostrimg.com échouent systématiquement
- La réponse contient du HTML (page d'erreur) au lieu de JSON
## Causes possibles identifiées
### 1. Headers HTTP manquants
**Problème** : Certains serveurs nécessitent des headers spécifiques pour retourner du JSON au lieu de HTML.
**Solution appliquée** :
- Ajout du header `Accept: application/json` pour indiquer au serveur qu'on attend du JSON
- Ajout du header `User-Agent: zapwall.fr/1.0` car certains serveurs bloquent les requêtes sans User-Agent
### 2. URL d'endpoint incorrecte
**Problème** : L'URL `https://nostrimg.com/api/upload` pourrait ne pas être la bonne.
**Vérifications à faire** :
- Vérifier la documentation de nostrimg.com
- Tester l'endpoint directement avec curl ou Postman
- Vérifier si l'endpoint nécessite un chemin différent (ex: `/upload` vs `/api/upload`)
### 3. Authentification requise
**Problème** : L'endpoint pourrait nécessiter une authentification (NIP-98 ou autre).
**Vérifications à faire** :
- Vérifier si nostrimg.com nécessite une authentification
- Tester avec un token d'authentification si disponible
- Vérifier la documentation pour les exigences d'authentification
### 4. Endpoint non disponible ou modifié
**Problème** : L'endpoint pourrait ne plus être disponible, avoir changé d'URL, ou être temporairement indisponible.
**Vérifications à faire** :
- Vérifier le statut du service nostrimg.com
- Tester l'endpoint directement dans un navigateur
- Vérifier les logs serveur pour voir le code de statut exact (404, 403, 500, etc.)
### 5. Configuration serveur
**Problème** : Le serveur nostrimg.com pourrait avoir une configuration qui retourne du HTML par défaut pour certaines requêtes.
**Vérifications à faire** :
- Vérifier le Content-Type de la réponse
- Vérifier si le serveur redirige vers une page d'erreur
- Vérifier les logs pour voir exactement ce qui est retourné
## Correctifs appliqués
### 1. Ajout de headers HTTP
```typescript
headers['Accept'] = 'application/json'
headers['User-Agent'] = 'zapwall.fr/1.0'
```
### 2. Amélioration de la détection des erreurs HTML
- Détection automatique des réponses HTML (commence par `<!DOCTYPE`, `<html`, ou `<!`)
- Classification des erreurs (404, 403, 500)
- Extraction du message d'erreur depuis le HTML (title, h1)
- Messages d'erreur plus clairs avec suggestions
### 3. Logging amélioré
- Aperçu du corps de la réponse HTML (500 caractères)
- Classification de l'erreur (404, 403, 500)
- Suggestions basées sur le type d'erreur détecté
## Diagnostic
Pour diagnostiquer le problème avec nostrimg.com :
1. **Vérifier les logs serveur** :
- Regarder les logs de l'API pour voir le code de statut exact
- Vérifier le contenu de la réponse HTML retournée
- Identifier le type d'erreur (404, 403, 500, etc.)
2. **Tester l'endpoint directement** :
```bash
curl -X POST https://nostrimg.com/api/upload \
-H "Accept: application/json" \
-H "User-Agent: zapwall.fr/1.0" \
-F "file=@test.jpg"
```
3. **Vérifier la documentation** :
- Consulter la documentation de nostrimg.com si disponible
- Vérifier les exemples d'utilisation
- Vérifier les exigences d'authentification
4. **Vérifier le statut du service** :
- Tester si le site nostrimg.com est accessible
- Vérifier si l'endpoint `/api/upload` existe
- Vérifier s'il y a des annonces de maintenance ou de changements
## Recommandations
1. **Désactiver temporairement nostrimg.com** :
- Si le problème persiste, désactiver l'endpoint dans les paramètres
- Utiliser d'autres endpoints fonctionnels (nostrcheck.me avec auth, etc.)
2. **Vérifier périodiquement** :
- Tester l'endpoint périodiquement pour voir s'il redevient fonctionnel
- Surveiller les mises à jour de nostrimg.com
3. **Alternative** :
- Utiliser d'autres endpoints NIP-95 qui fonctionnent correctement
- Configurer nostrcheck.me avec authentification NIP-98
## Modifications
- **Fichier modifié** : `pages/api/nip95-upload.ts`
- **Headers ajoutés** :
- `Accept: application/json`
- `User-Agent: zapwall.fr/1.0`
- **Détection HTML améliorée** :
- Classification des erreurs (404, 403, 500)
- Messages d'erreur plus clairs
- Logging amélioré avec aperçu du HTML