As prévias do Onebox não estão funcionando para o meu site

Tenho um site ao qual adicionei as tags \u003cmeta\u003e OpenGraph necessárias, mas ele não está exibindo nenhuma prévia do Onebox. Ele está passando na validação OpenGraph, então duvido que seja um problema de marcação.

(Não posso postar um link para o validador, pois sou um usuário novo)

Posso observar no lado do servidor que ele está, de fato, servindo páginas para o robô do Discourse:

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

mas os links simplesmente não aparecem:

Considerei que o problema poderia ser porque retornamos 505 HTTP Version Not Supported para requisições HEAD, com base neste tópico. então corrigi nosso servidor para retornar uma resposta superficial 200 OK para o 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

No entanto, isso ainda não está funcionando.

1 curtida

Olá, seja bem-vindo :wave:

Você pode verificar se o seu servidor não está bloqueando as requisições? Pelo que vejo, recebo 400 como código de erro (quando olho a resposta do Discourse fetch).

2 curtidas

Entendo, reconfigurei o site para tratar requisições HEAD de forma idêntica às requisições GET.

O site tem uma política de segurança que retorna 400 a menos que o cliente envie uma string de user agent que comece com a string \"Discourse Forum Onebox\" e um cabeçalho Accept-Language: *. Consigo passar o filtro usando curl com as seguintes configurações:

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

Existe alguma maneira de eu ver a resposta do Discourse fetch?

Pelo que vejo, é uma requisição GET, e apenas o cabeçalho User-Agent é passado. No momento, retorna um Bad Request.

Não acho que haja uma maneira direta de ver a resposta; adicionei alguns logs de depuração diretamente no código.

1 curtida

ah, era isso, havia um filtro no cabeçalho Accept-Language, que o bot não envia com todas as solicitações. muito obrigado!

3 curtidas

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