Le anteprime di Onebox non funzionano per il mio sito

Ho un sito a cui ho aggiunto i tag OpenGraph \u003cmeta\u003e richiesti, ma non vengono visualizzate anteprime Onebox. Supera la convalida OpenGraph, quindi dubito che sia un problema di markup.

(Non posso pubblicare un link al validatore perché sono un nuovo utente)

Posso osservare dal lato server che sta effettivamente servendo pagine al robot Discourse:

User-Agent: 'Discourse Forum Onebox v3.3.0.beta1-dev'
IP Address: 2602:fd3f:3:204:0:242:ac11:2d

ma i link semplicemente non compaiono:

Ho considerato che il problema potesse essere dovuto al fatto che restituiamo 505 HTTP Version Not Supported per le richieste HEAD, basandomi su questo thread. quindi ho patchato il nostro server per restituire una risposta perentoria 200 OK per il metodo 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
< 

tuttavia, questo ancora non funziona.

1 Mi Piace

Ciao, benvenuto :wave:

Puoi verificare che il tuo server non blocchi le richieste? Da quello che vedo, ottengo 400 come codice di errore (quando guardo la risposta fetch di Discourse)

2 Mi Piace

Capisco, ho riconfigurato il sito per trattare le richieste HEAD in modo identico alle richieste GET.

Il sito ha una policy di sicurezza che restituirà 400 a meno che il client non invii una stringa User-Agent che inizi con la stringa \"Discourse Forum Onebox\" e un header Accept-Language: *. Sono in grado di superare il filtro usando curl con le seguenti impostazioni:

$ 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
<

C’è un modo per vedere la risposta di fetch di Discourse?

Per quanto vedo, è una richiesta GET e viene passato solo l’header User-Agent. Al momento, restituisce una Richiesta non valida.

Non credo ci sia un modo diretto per vedere la risposta; ho aggiunto alcuni log di debug direttamente nel codice.

1 Mi Piace

ah era quello, aveva un filtro sull’intestazione Accept-Language, che il bot non invia con tutte le richieste. grazie mille!

3 Mi Piace

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