Las previsualizaciones de Onebox no funcionan para mi sitio

Tengo un sitio al que agregué las etiquetas \u003cmeta\u003e de OpenGraph requeridas, pero no muestra ninguna vista previa de Onebox. Pasa la validación de OpenGraph, así que dudo que sea un problema de marcado.

(No puedo publicar un enlace al validador, porque soy un usuario nuevo)

Puedo observar en el lado del servidor que efectivamente está sirviendo páginas al robot de Discourse:

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

pero los enlaces simplemente no aparecen:

Consideré que el problema podría deberse a que devolvemos 505 HTTP Version Not Supported para las solicitudes HEAD, basándome en este hilo. Así que parcheé nuestro servidor para que devuelva una respuesta perfunctory 200 OK para el método 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
< 

Sin embargo, esto todavía no funciona.

1 me gusta

Hola, bienvenido :wave:

¿Puedes verificar si tu servidor no está bloqueando las solicitudes? Por lo que veo, obtengo 400 como código de error (cuando miro la respuesta de Discourse fetch).

2 Me gusta

Entiendo, he reconfigurado el sitio para tratar las solicitudes HEAD de forma idéntica a las solicitudes GET.

El sitio tiene una política de seguridad que devolverá 400 a menos que el cliente envíe una cadena de agente de usuario que comience con la cadena \"Discourse Forum Onebox\" y una cabecera Accept-Language: *. Puedo pasar el filtro usando curl con la siguiente configuración:

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

¿Hay alguna forma de ver la respuesta de Discourse fetch?

Por lo que veo, es una solicitud GET y solo se pasa la cabecera User-Agent. Ahora mismo, devuelve una Solicitud incorrecta.

No creo que haya una forma directa de ver la respuesta; añadí algunos registros de depuración directamente en el código.

1 me gusta

ah, ese era el problema, tenía un filtro en la cabecera Accept-Language, que el bot no envía con todas las solicitudes. ¡muchas gracias!

3 Me gusta

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