Kann Portnummer nicht in URL verwenden, um Medien in Beitrag einzubetten

Damit meine Benutzer Videos, Audiodateien usw. hosten können, die sie in Discourse-Beiträgen einbetten, habe ich einen Apache-Server eingerichtet, der neben dem Nginx, der Discourse ausführt, läuft. Der Apache-Server läuft auf Port 8008 für HTTP: und Port 591 für HTTPS: (IANA-Ports, die für http-alt reserviert sind). Dies funktioniert einwandfrei und Inhalte auf dem Server sind von Browsern aus zugänglich, indem die Portnummer in der URL angegeben wird, zum Beispiel:

https://scanalyst.fourmilab.ch:591/video/f9_from_drone_ship_2022-10-12.mp4

Wenn Sie jedoch versuchen, diese URL in einen Discourse-Beitrag einzubetten, schlägt dies mit folgender Meldung fehl:

Entschuldigung, wir konnten keine Vorschau für diese Webseite erstellen, da der Server ‘scanalyst.fourmilab.ch’ nicht gefunden werden konnte. Anstelle einer Vorschau wird in Ihrem Beitrag nur ein Link angezeigt.

Wenn ich tcpdump ausführe und den DNS-Verkehr überwache, sehe ich nichts, das gesendet wird, wenn diese URL abgelehnt wird. Sie wird abgelehnt, ohne jemals eine DNS-Abfrage zu machen. Wenn ich die Portnummer in der URL auf 443, den Standard für HTTPS:, ändere, wird die DNS-Abfrage normal durchgeführt, aber die Einbettung schlägt natürlich fehl, da der Apache-Server nicht auf diesem Port lauscht und der Discourse-Server nicht weiß, was er mit der URL anfangen soll. Ich habe in der Discourse-Dokumentation nichts gefunden, das darauf hindeutet, dass Einbettungs-URLs keine Portnummer angeben dürfen.

Bei der Durchsicht des Quellcodes habe ich in der Funktion validate_uri_format in Zeile 362 von lib/final_destination.rb eine Prüfung gefunden, die lautet:

    return false if @uri.scheme == 'https' && @uri.port != 443

die anscheinend eine HTTPS-URL ablehnt, die einen anderen Port als 443 verwendet. Dies schien zu erklären, was ich sah, also habe ich diese Zeile auskommentiert, aber es machte überhaupt keinen Unterschied, selbst nachdem ich Discourse neu gestartet hatte. Wenn der Beitrag auf der Website erscheint und die Einbettung in einen Textlink umgewandelt wurde, zeigt das Klicken auf den Textlink das Video korrekt an, sodass das einzige Problem darin besteht, dass es nicht als Einbettung erkannt und der Inline-Player darum herum gelegt wird.

Meine Fragen sind zu diesem Zeitpunkt:

  • Sind nicht standardmäßige Portnummern für URLs für Einbettungen in Discourse-Beiträgen vorgesehen?
  • Wenn ja, was verursacht die Ablehnung dieser URLs?
  • Gibt es eine Möglichkeit, sie zum Laufen zu bringen?

Es gab hier im März 2017 eine Diskussion über dieses Problem in diesen beiden Beiträgen:

die implizierten, dass das Problem behoben worden war, aber es funktioniert heute auf 2.9.0.beta10 nicht.

Vielen Dank für alle Einblicke und/oder Hilfestellungen in dieser Angelegenheit.

1 „Gefällt mir“