Лучшим способом было бы не делать это программно:
<a href={fileUrl} download>
Download
</a>
Если вы хотите пойти темным путем, чтобы сделать его совместимым с большим количеством браузеров, вам нужно получить файл через ajax, создайтеblob, создайте URL-адрес из BLOB-объекта, создайте элемент привязки и назначьте URL-адрес BLOB-объекта, а затем щелкните его.
Или, как говорит @Quentin, если перекрестный источник заблокирован, то я бы предпочел, чтобы проксифайл через ваш сервер в том же домене и по-прежнему использовать атрибут загрузки href="/api/fileproxy?url=http://...."
.