Claus: http Content-disposition bei link überschreiben

Hallo Ich möchte einen Link auf ein Bild bei einem Drittanbieter setzen (in neuem Fenster anzeigen). Dieser "trickst" aber solche legalen Deeplinks aus, in dem er als HTTP Response Header Content-disposition: attachment mitliefert und so stets ein Download entsteht. Kann ich irgendwie per HTML/irgendwas die Content-disposition "überschreiben", so daß das Bild wie üblich im Browser angezeigt wird.

Gefühlsmäßig würde ich ja sagen: nein

Ich will kein Addon im Browser installieren - soll ja für jeden Besucher funktionieren.

Beispiel: http://87.106.240.77:8080/imageService/getImage?fileName=II02987.jpg

  1. n'Abend,

    Ich möchte einen Link auf ein Bild bei einem Drittanbieter setzen (in neuem Fenster anzeigen). Dieser "trickst" aber solche legalen Deeplinks aus, in dem er als HTTP Response Header Content-disposition: attachment mitliefert und so stets ein Download entsteht.

    ein Download ergibt sich auch, wenn der Browser das Bild ganz normal anzeigt, wie du es gern hättest - ohne Download kann er das nicht. ;-)

    Kann ich irgendwie per HTML/irgendwas die Content-disposition "überschreiben", so daß das Bild wie üblich im Browser angezeigt wird.

    Nein. Mit HTML kannst du nur das Bild verlinken; was der Server dazu an Metainformationen (HTTP-Header) liefert, hast du nicht im Griff. Und auch nicht, was der Browser aus diesen Informationen macht.

    Gefühlsmäßig würde ich ja sagen: nein

    Ich schließe mich den Ausreden meines Verteidigers an.

    Ich will kein Addon im Browser installieren - soll ja für jeden Besucher funktionieren.

    Wenn du bereit bist, die große Keule auszupacken ...
    Du könntest mit einer serverseitigen Scriptsprache (z.B. PHP) auf deinem eigenen Webspace das Bild vom Fremdserver abrufen und dann mit den Headern ausliefern, die du für richtig hältst.
    Allerdings entsteht dann der Eindruck, dass das Bild zu deinem Webauftritt gehört, weil es aus der Sicht des Besuchers unter deiner Domain abrufbar ist.

    Beispiel: http://87.106.240.77:8080/imageService/getImage?fileName=II02987.jpg

    Ich habe dir den Link mal repariert.

    So long,
     Martin

    --
    Ach, macht ihr da Ohm doch Watt ihr Volt.
    1. Allerdings entsteht dann der Eindruck, dass das Bild zu deinem Webauftritt gehört, weil es aus der Sicht des Besuchers unter deiner Domain abrufbar ist.

      Und genau dann ist es illegal. Also für mich nicht akzeptabel. Zumal nicht nur der Eindruck entsteht, sondern das Bild ja sogar von meinem Server ausgeliefert wird. 😕

      1. Hallo,

        Allerdings entsteht dann der Eindruck, dass das Bild zu deinem Webauftritt gehört, weil es aus der Sicht des Besuchers unter deiner Domain abrufbar ist.

        Und genau dann ist es illegal.

        nicht zwangsläufig. Wenn das Bild dann in deinem eigenen Webauftritt erscheint, aber deutlich als Beitrag eines anderen gekennzeichnet ist, sehe ich da kein Problem.

        Zumal nicht nur der Eindruck entsteht, sondern das Bild ja sogar von meinem Server ausgeliefert wird. 😕

        Ja schon. Deswegen sagte ich: Angemessen kennzeichnen. Dann könnte ich mir vorstellen, dass das vom Zitatrecht gedeckt ist. Aber: IANAL.

        Ciao,
         Martin

        --
        Ach, macht ihr da Ohm doch Watt ihr Volt.
        1. Ja schon. Deswegen sagte ich: Angemessen kennzeichnen. Dann könnte ich mir vorstellen, dass das vom Zitatrecht gedeckt ist. Aber: IANAL.

          Auf gar keinen Fall. Ein Bildzitat ist nicht einfach ein Bild mit einer Quellenangabe. Das "Zitat" bedeutet, man geht im Text auf inhaltliche besondere Aspekte dieses Bildes ein. Und ein Deeplink ist eben kein Versuch, ein Zitat vorzugaukeln, sondern ein ganz legaler und unkritischer Link auf content.

          Nur so zur Info und Klarstellung für alle, die sich rausreden wollen.

  2. Hello,

    hast Du es mal mit AJAX und Hinzufügen eines Referers (passend zur Originalseite) ausprobiert?

    Ob sich das lohnen kann, kannst Du vorher in der Konsole des Firefox ausprobieren. Dort kannst Du den Request mit geänderten Headern wiederholen. Also entweder Referer löschen, oder den passenden einsetzen. Mit dem falschen kommt vermutlich immer der Attachment-Header.

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.
    1. Hello,

      hast Du es mal mit AJAX und Hinzufügen eines Referers (passend zur Originalseite) ausprobiert?

      Kannst du das etwas konkretisieren? Habe keine Ahnung, wie das aussehen kann.

  3. Leider kann ich Dein Problem nicht nachvollziehen. Meine Browser zeigen das Bild, was mit "Content-Disposition" => qq(attachment; filename="red.gif") ausgeliefert wird ohne Weiteres an wenn es als <img> eingebunden wurde.

    MFG

    1. Hallo,

      Leider kann ich Dein Problem nicht nachvollziehen. Meine Browser zeigen das Bild, was mit "Content-Disposition" => qq(attachment; filename="red.gif") ausgeliefert wird ohne Weiteres an wenn es als <img> eingebunden wurde.

      das ist aber nicht das Szenario, das Claus beschreibt. Er will das Bild nicht als img-Element einbinden, sondern als eigenständige Ressource verlinken.

      Ciao,
       Martin

      --
      Ach, macht ihr da Ohm doch Watt ihr Volt.
    2. Hello,

      Leider kann ich Dein Problem nicht nachvollziehen. Meine Browser zeigen das Bild, was mit "Content-Disposition" => qq(attachment; filename="red.gif") ausgeliefert wird ohne Weiteres an wenn es als <img> eingebunden wurde.

      Guter Hinweis.
      Da schlummern also immer noch Geheimnisse zwischen den RFCs.

      Dann würde die Idee mit den Referern also vermutlich auch nichts bringen?

      Glück Auf
      Tom vom Berg

      --
      Es gibt nichts Gutes, außer man tut es!
      Das Leben selbst ist der Sinn.
      1. Dann würde die Idee mit den Referern also vermutlich auch nichts bringen?

        Das wäre zu prüfen. Aber wenn schon JS dann doch gleich richtig.

        Zumal dafür der Link nicht einmal geändert werden muss.

        MFG

  4. Auf der Same Origin getestet:

    var xhr = new XMLHttpRequest();
    xhr.open("GET","%url%?att=1");  // Same Origin
    xhr.responseType = 'blob';
    xhr.onload = function(){
        var href = URL.createObjectURL(this.response);
        document.getElementById('link').href = href;
    }
    xhr.send()
    

    Der Link wird praktisch neu gebaut mit der Response als Blob. Damit ist der Downloaddialog weg.

    MFG

    PS: Funktioniert auch mit Cross Origin.