今回は私が自作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拡張機能を作っている際にあったものです。
結構悩み、原因特定に時間がかかってしまったので、まとめておきました。
何かミスや回避方法を知っている場合は、コメント欄から教えていただけるとありがたいです!
コメント