Ich habe eine Website, zu der ich die erforderlichen \u003cmeta OpenGraph-Tags hinzugefügt habe, aber sie zeigt keine Onebox-Vorschauen an. Sie besteht die OpenGraph-Validierung, daher bezweifle ich, dass es sich um ein Markup-Problem handelt.
(Ich kann keinen Link zum Validator posten, da ich ein neuer Benutzer bin)
Ich kann auf der Serverseite beobachten, dass tatsächlich Seiten für den Discourse-Bot bereitgestellt werden:
User-Agent: 'Discourse Forum Onebox v3.3.0.beta1-dev'
IP Address: 2602:fd3f:3:204:0:242:ac11:2d
aber die Links erscheinen einfach nicht:
Ich habe in Betracht gezogen, dass das Problem darin liegen könnte, dass wir für HEAD-Anfragen 505 HTTP Version Not Supported zurückgeben, basierend auf diesem Thread. Daher habe ich unseren Server so angepasst, dass er eine oberflächliche 200 OK-Antwort für die HEAD-Methode zurückgibt:
> 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
Dies funktioniert jedoch immer noch nicht.
Hallo, willkommen 
Können Sie prüfen, ob Ihr Server die Anfragen nicht blockiert? Soweit ich das sehe, erhalte ich den Fehlercode 400 (wenn ich mir die Discourse-Fetch-Antwort ansehe).
Ich verstehe, ich habe die Website so konfiguriert, dass HEAD-Anfragen identisch mit GET-Anfragen behandelt werden.
Die Website hat eine Sicherheitsrichtlinie, die 400 zurückgibt, es sei denn, der Client sendet eine User-Agent-Zeichenfolge, die mit der Zeichenfolge \"Discourse Forum Onebox\" beginnt, und einen Accept-Language: *-Header. Ich kann den Filter mit curl mit den folgenden Einstellungen passieren:
$ 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
<
Gibt es eine Möglichkeit, die Discourse-Fetch-Antwort zu sehen?
Nach meinem Dafürhalten handelt es sich um eine GET-Anfrage, und es wird nur der User-Agent-Header übergeben. Derzeit wird eine Bad Request-Meldung zurückgegeben.
Ich glaube nicht, dass es eine direkte Möglichkeit gibt, die Antwort zu sehen; ich habe einige Debug-Logs direkt in den Code eingefügt.
ah, das war’s, es gab einen Filter für den Accept-Language-Header, den der Bot nicht mit allen Anfragen sendet. Vielen Dank!