Ok, ich habe die Stelle gefunden, an der Markdown für Anhänge generiert wird und soweit ich die Plugin-API verstehe, kann man sie nicht (einfach) überschreiben (ich glaube sogar, man sollte es nicht tun).
Mein ursprünglicher Gedanke, diesen URLs einen ?dl=1-Parameter hinzuzufügen, scheint also der falsche Weg zu sein.
Was das Nicht-Erzwingen von Downloads für aufgelöste Kurz-URLs angeht: Wenn ich das Argument gegen öffentliche ACLs auf S3-Buckets richtig verstehe, sollte man entweder:
- Dateien von S3 über ein CDN bereitstellen (für Anhänge nicht machbar, wie @martin anmerkte, da wir in diesem Fall den Dateinamen für den Download möglicherweise nicht korrekt festlegen können)
- Eine vorab signierte URL für das S3-Objekt erstellen
Das aktuelle Verhalten tut jedoch keines von beiden und erwartet, dass der S3-Bucket eine öffentliche ACL hat. Dies scheint auch bei unterstützten S3-Anbietern (einschließlich Amazon) der Fall zu sein. Daher würde ich fragen, warum die Option force_download in Discourse.store.url_for nicht standardmäßig auf true gesetzt wird, wenn Kurz-URLs für S3-Stores aufgelöst werden?",“target_locale”:“de”}