質問: WEBアプリケーションを前提としています。 通常、HTMLへの埋め込み、CSSでの埋め込みで画像を表示しますが、 クライアントが(※完全な画像を)ダウンロードできない画像を表示するWEBサービスを発見しました。 解像度の落ちた画像はDL可能なようです。 携帯用写真アップローダーのようですが、先日発見したアップローダーが下記になります。 右上に、再配布NGとなっており、NGの場合は写真をクリックできないようになっているようです。 再配布可の場合は写真をクリックすると、完全な解像度の画像を表示するようになっています。 解像度を落とした画像と、通常のアップロードされた画像の2種類を作成すれば可能かと思われますが、このサイトの場合、正規画像のURLを見つけてしまえば正規画像はDL可能なのでしょうか? また、アップロードされた正規画像を参照(ブラウザで表示)することはできても、DLすることはできない(PC・モバイル問わず)ということは技術的に可能なのでしょうか?
回答: ダウンロードしないと表示もできないので、ダウンロードを技術的に防ぐ事は(一般的なブラウザを対象とする限り)出来ません。 画像の保存を面倒にする方法はいろいろあると思います。 例として出されたURLですと、まず再配布NGの物には画像ファイルへのリンクが設定されてません(これは、まあ普通の事です)。 多少こっているのは、画像が表示されている位置に以下の二つの DOM が生成されている事です。 ``` ``` 最初の`img`要素が本物の画像であり、次の`img`要素は`blank.gif`という名からも明らかですが、ダミーです。 ダミー要素の生成には`JavaScript`を使っているようですね。 ブラウザには、これらが重ねて表示されます。ユーザが操作しようとすると、手前(Z軸で上)に設定されているダミーへの操作になるので、通常の手順では画像の保存が出来ないという仕組みです。 どちらにせよ、一手間かければ保存できますので、ちょっとした嫌がらせといった所です。 (もちろん、表示している物とは別に高解像度の画像があるのなら、それはダウンロードを制限できます。だだ、表示もダウンロードもさせないのですから、サーバに置いておく必要もないことになります)