Laravel-excel: [ОШИБКА] заголовки ответов (cors)

Созданный на 16 нояб. 2016  ·  3Комментарии  ·  Источник: Maatwebsite/Laravel-Excel

Версия пакета, версия Laravel

ларавель 5.1
Laravel-Excel 2.1.0
barryvdh/laravel-cors 0.8.0

Ожидаемое поведение

Я ожидал, что laravel-excel отлично работает с laravel-cors

Фактическое поведение

laravel-excel игнорирует laravel-cors и не устанавливает в ответе
заголовки «Access-Control-Allow-Origin» и «Vary»

в методах загрузки и экспорта laravel-excel не используйте Illuminate\Http\Response
это что сломало все?

Шаги для воспроизведения поведения

Сделайте запрос с www.example-a.com в javascript (в моем случае приложение angularjs) на www.example-b.com (сервер с laravel + laraver-cors + laravel-excel)

Самый полезный комментарий

Этот пакет не поддерживает использование Response, так как PHPExcel обрабатывает фактическую загрузку. Вам нужно будет передать заголовки самостоятельно (2-й параметр)

->download('xls', [yourheader])

Все 3 Комментарий

Этот пакет не поддерживает использование Response, так как PHPExcel обрабатывает фактическую загрузку. Вам нужно будет передать заголовки самостоятельно (2-й параметр)

->download('xls', [yourheader])

Пожалуйста, добавьте это в документацию.

Привет, на самом деле я использую Laravel-Excel в проекте Lumen, и я пытаюсь экспортировать данные в файл excel и загрузить его, как показано ниже:

Мой экспорт пользователей :

use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    /**
    * <strong i="8">@return</strong> \Illuminate\Support\Collection
    */
    public function collection()
    {
        return User::all();
    }
}

Мой контроллер :

public function excel()
    {
        return Excel::download(new UsersExport(),'users.xlsx');
    } 

веб.php :
$router->get('/download', 'CommunicationController<strong i="17">@excel</strong>');

И когда я пытаюсь выполнить функцию excel(), я получаю эту ошибку

image

Однако я уже давно создал CorsMiddleware.php и добавил его в свой bootstrap/app.php, и благодаря этому все остальные функции работают очень хорошо.

приложение.php :

$app->middleware([
    App\Http\Middleware\CorsMiddleware::class
]);

CorsMiddleware.php :

<?php

namespace App\Http\Middleware;

use Closure;

class CorsMiddleware
{
    /**
     * Handle an incoming request.
     *
     * <strong i="30">@param</strong>  \Illuminate\Http\Request  $request
     * <strong i="31">@param</strong>  \Closure  $next
     * <strong i="32">@return</strong> mixed
     */
    public function handle($request, Closure $next)
    {
        $headers = [
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Methods'     => 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Max-Age'           => '86400',
            'Access-Control-Allow-Headers'     => 'Content-Type, Authorization, X-Requested-With, api_token'
        ];

        if ($request->isMethod('OPTIONS'))
        {
            return response()->json('{"method":"OPTIONS"}', 200, $headers);
        }

        $response = $next($request);
        foreach($headers as $key => $value)
        {
            $response->header($key, $value);
        }

        return $response;
    }
}

Я что-то забыл? Я застрял на этом со вчерашнего дня, и мне очень нужна ваша помощь :'(

Здесь вы можете увидеть версии Lumen, которые я использую, а также maatwebsite/excel:

"require": {
        "php": ">=7.1.3",
        "guzzlehttp/guzzle": "^6.3",
        "laravel/lumen-framework": "5.7.*",
        "maatwebsite/excel": "^3.1",
        "phpoffice/phpspreadsheet": "^1.6",
        "vlucas/phpdotenv": "~2.2"
    },

Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги