web-dev-qa-db-ja.com

認証ヘッダー付きのアンカーリンクをダウンロード

ブラウザのファイル保存を介してExcelファイルをユーザーのローカルドライブにダウンロードする、javascript(マリオネット/バックボーン)単一ページアプリケーションに追加したいリンクがあります。一般的なHTTPリクエストは次のとおりです。

GET /api/v1/objects/?format=xls HTTP/1.1
Authorization: ApiKey username:apikey
Host: api.example.com
Connection: close
User-Agent: Paw 2.0.5 (Macintosh; Mac OS X 10.9.2; en_US)
Content-Length: 0

これにより、次の典型的な応答が得られます。

HTTP/1.1 200 OK
Server: gunicorn/18.0
Date: Tue, 06 May 2014 03:09:02 GMT
Connection: close
Transfer-Encoding: chunked
Vary: Accept
Content-Type: application/vnd.ms-Excel
Content-Disposition: attachment; filename="filename.xls"
Cache-Control: no-cache

<<CONTENT HERE>>>

これは、ブラウザーのファイルストレージ機構を呼び出すボタンとしてスタイル設定された単純なアンカー要素を使用して行います。次のようなもの:

<a href="/api/v1/objects/?format=xls" class="btn btn-primary pull-right">Download to Excel file</a>

アンカーリンクを介してこれを行うときに、どのように認証ヘッダーが渡されるかについては明確ではありません。または、おそらく考えていないだけで、より良い方法があるでしょう。

私のバックエンドは、Django Tastypieを使用したWebアプリです。

21
Erik

HTTPヘッダーを追加する唯一の方法はXHRを使用することです ですので、これはできない可能ですが、 XHRはファイルのダウンロードに使用

ただし、Cookieを使用してそれを行うことができます。

  1. サーバーからの戻り値でCookieを設定するだけです。
  2. ユーザーがリンクをクリックするまで待ちます。
  3. ユーザーがリンクをクリックした後、Cookieを無効にします。
16
Artjom B.