J’ai un site auquel j’ai ajouté les balises OpenGraph \u003cmeta\u003e requises, mais il n’affiche aucune prévisualisation Onebox. Il réussit la validation OpenGraph, donc je doute que ce soit un problème de balisage.
(Je ne peux pas poster de lien vers le validateur, car je suis un nouvel utilisateur)
Je peux observer côté serveur qu’il sert effectivement des pages au robot Discourse :
User-Agent: 'Discourse Forum Onebox v3.3.0.beta1-dev'
IP Address: 2602:fd3f:3:204:0:242:ac11:2d
mais les liens n’apparaissent tout simplement pas :
J’ai considéré que le problème pourrait venir du fait que nous renvoyons une réponse HTTP 505 Version non prise en charge pour les requêtes HEAD, sur la base de ce fil de discussion. J’ai donc patché notre serveur pour qu’il renvoie une réponse 200 OK superficielle pour la méthode HEAD :
Pouvez-vous vérifier si votre serveur ne bloque pas les requêtes ? D’après ce que je vois, j’obtiens 400 comme code d’erreur (quand je regarde la réponse de récupération de Discourse).
Je vois, j’ai reconfiguré le site pour traiter les requêtes HEAD de la même manière que les requêtes GET.
Le site a une politique de sécurité qui renvoie 400 à moins que le client n’envoie une chaîne d’agent utilisateur commençant par la chaîne \"Discourse Forum Onebox\" et un en-tête Accept-Language: *. Je suis capable de passer le filtre en utilisant curl avec les paramètres suivants :
$ curl -v -I --http1.1 \
-A 'Discourse Forum Onebox v3.3.0.beta1-dev' \
-H 'Accept-Language: *' \
https://swiftinit.org -o /dev/null
D’après ce que je vois, il s’agit d’une requête GET, et seul l’en-tête User-Agent est passé. Actuellement, elle renvoie une Bad Request (Mauvaise requête).
Je ne pense pas qu’il y ait un moyen direct de voir la réponse ; j’ai ajouté des journaux de débogage directement dans le code.