Les aperçus Onebox ne fonctionnent pas pour mon site

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 :

> HEAD / HTTP/1.1
> Host: swiftinit.org
> User-Agent: curl/7.81.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< host: swiftinit.org
< access-control-allow-origin: *
< content-length: 0
< content-type: text/html; charset=utf-8
< 

Cependant, cela ne fonctionne toujours pas.

1 « J'aime »

Bonjour, bienvenue :wave:

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).

2 « J'aime »

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
> HEAD / HTTP/1.1
> Host: swiftinit.org
> User-Agent: Discourse Forum Onebox v3.3.0.beta1-dev
> Accept: */*
> Accept-Language: *
> 
< HTTP/1.1 200 OK
< host: swiftinit.org
< link: <https://swiftinit.org/>; rel="canonical"
< etag: "8898806577480f6f7e5241ff270a9201"
< access-control-allow-origin: *
< content-length: 18933
< content-type: text/html; charset=utf-8
< 

Y a-t-il un moyen de voir la réponse de récupération de Discourse ?

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.

1 « J'aime »

ah c’était ça, il y avait un filtre sur l’en-tête Accept-Language, que le bot n’envoie pas avec toutes les requêtes. merci beaucoup !

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.