Загрузить привязку с заголовком авторизации

У меня есть ссылка, которую я бы хотел добавить в одностраничное приложение javascript (Marionette/Backbone), которое загрузит файл Excel на локальный диск пользователя с помощью сохранения файла браузера. Типичным 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>

Я не понимаю, как я могу передать заголовок авторизации, когда делаю это с помощью привязки - или, может быть, я просто не думаю, и есть лучший способ.

My backend - это веб-приложение Django, использующее Tastypie.

Ответ 1

Этот не возможен, потому что единственный способ добавить заголовки HTTP - использовать XHR, но XHR не может использоваться для загрузки файлов.

Однако вы можете использовать файлы cookie для этого.

  • Просто установите cookie с возвращаемым значением с сервера.
  • Подождите, пока пользователь нажмет на ссылку.
  • Неверный файл cookie после того, как пользователь нажал ссылку.