Похоже, проблема в том, что одностраничное приложение использует защищенный API oAuth2 и вы хотите позволить пользователю загрузить файл, однако это не удается, поскольку вы не можете установить заголовок Authorization
в запросе.
Лучший способ решить эту проблему - использовать функцию со знаком Laravel. Верните из своего API подписанный URL-адрес (который действителен, например, только в течение 1 часа) и защитите свой маршрут загрузки не с помощью промежуточного программного обеспечения oAuth2, а с помощью инструкций в связанной документации с одиночным URL (signed
промежуточное программное обеспечение).
Ваше действие контроллера будет выглядеть так:
public function downloadExcel($fileName)
{
return response()->file(resource_path() . '/file_storage/exports/' . $fileName)
->deleteFileAfterSend(true);
}
Будьте осторожны с частью ->deleteFileAfterSend(true)
, так как это удалит файл с диска после первой загрузки, это может быть предназначено, но я хотел упомянуть об этом на всякий случай
Это наиболее безопасный вариант. Есть и другие, но они потребуют, чтобы вы указали маркер доступа в качестве параметра GET в запросе, что является очень плохой идеей, поскольку параметры GET не зашифрованы и будут отображаться, например, в журналах доступа. Поэтому, пожалуйста, не делайте этого:)