Chromeでダウンロードリンクが機能しない原因

Web開発

今回は私が自作Chrome拡張機能を開発している際に、ハマったトラブルについてメモします。

やりたかったこと

Webサイト上の特定の要素をワンクリックでダウンロードできるようにしたかった。

ダウンロードリンクとは

HTML5では、以下のようにaタグに「download」要素付きで定義することにより、
リンクをクリックした際に、ファイルのダウンロードするリンクを作ることができます。

<a href="<URL>" target="_blank" download>ダウンロードリンク</a>

また、download要素は値がしていでき、以下のようにすると、「test」という名前でファイルが保存されます。

<a href="<URL>" target="_blank" download="test">ダウンロードリンク</a>

ダウンロードできない原因

僕の場合、前節の通りに設定を行っても、新しいタブで画像が開いてしまい、直接ダウンロードされない状態でした。

この原因は、Chrome 65から導入されたセキュリティ設定にあります。
これは、同じドメイン内のファイルしかdownloadが機能しないようになるものです。
ダウンロードファイルとアクセスしたドメインが一致している場合には、ダウンロード可能です。

例えば、「hogehoge.com」というサイトにアクセスした場合、以下のようなになっていれば、ダウンロードできます。
ここで、対象ファイル(http://hogehoge.com/image.png )のドメインが、サイトのドメインと一致しているからです。

<a href="http://hogehoge.com/image.png" target="_blank" download>ダウンロードリンク</a>

一方で、以下のような場合、ダウンロード機能しません。
対象ファイルのドメイン(abcd.com)が、サイトのドメイン(hogehoge.com)と一致していないためです。

<a href="http://abcd.com/image.png" target="_blank" download>ダウンロードリンク</a>

まとめ

この症状は、僕が自作Chrome拡張機能を作っている際にあったものです。
結構悩み、原因特定に時間がかかってしまったので、まとめておきました。

何かミスや回避方法を知っている場合は、コメント欄から教えていただけるとありがたいです!

コメント

タイトルとURLをコピーしました