**Motivations:** - Document the issue with nostrimg.com returning HTML instead of JSON - Explain possible root causes and solutions - Provide diagnostic steps for troubleshooting **Root causes:** - Missing HTTP headers (Accept, User-Agent) - Possible incorrect endpoint URL - Possible authentication requirements - Endpoint may be unavailable or changed **Correctifs:** - Added Accept and User-Agent headers - Improved HTML error detection and classification - Enhanced error messages and logging **Evolutions:** - None **Pages affectées:** - fixKnowledge/nostrimg-html-response-error.md (new)
127 lines
4.7 KiB
Markdown
127 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
|
|
|