Загрузка файла Laravel 5.5 Вызов неопределенного метода BinaryFileResponse::withCookie()

После обновления до Laravel 5.5 этот код:

    $headers = ['Content-Type: ' . $fileData[2]];
    return Response::download($fileData[0], $fileData[1] ,$headers);

выдает эту ошибку:

Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::withCookie()

in CreateFreshApiToken.php (line 51)
at CreateFreshApiToken->handle(object(Request), object(Closure))
in Pipeline.php (line 149)

Есть идеи? Может быть это ошибка? Он хорошо работал с Laravel 5.4.


person Peter Matisko    schedule 07.09.2017    source источник


Ответы (1)


Вы должны проверить, что делает CreateFreshApiToken.php. Response::download возвращает Symfony\Component\HttpFoundation\BinaryFileResponse, а в этом классе нет метода withCookie. В Laravel 5.4, похоже, было точно так же. Если это не поможет, включите этот код класса и какое промежуточное ПО вы используете в файле App\Http\Kernel.php.

Кажется, что-то сломалось в Laravel Passport в этом PR http://github.com/laravel/passport/pull/474 . Вы также можете посмотреть на http://github.com/laravel/passport/issues/489 и, возможно, удалите этот маршрут из веб-промежуточного программного обеспечения, если это возможно, в качестве временного исправления и дождитесь исправления в Laravel Passport.

person Marcin Nabiałek    schedule 07.09.2017
comment
CreateFreshApiToken.php взят из Passport: vendor\laravel\passport\src\Http\Middleware\CreateFreshApiToken.php. Перед вызовом withCookie есть эта строка: if($this-›shouldReceiveFreshToken($request, $response)) - person Peter Matisko; 07.09.2017
comment
@PeterMatisko Используете ли вы последнюю версию Passport (4.0.2)? - person Marcin Nabiałek; 07.09.2017
comment
@PeterMatisko Кажется, что-то сломалось на github.com/laravel/passport/pull/474 . Вы также можете посмотреть на github.com/laravel/passport/issues/489 и, возможно, удалите этот маршрут из промежуточного программного обеспечения web, если это возможно, в качестве временного исправления - person Marcin Nabiałek; 07.09.2017
comment
Я делаю реверс-инжиниринг в функциях паспорта. Похоже, файлы cookie в $response пусты. - person Peter Matisko; 07.09.2017