【问题标题】:Laravel 5.5 file download Call to undefined method BinaryFileResponse::withCookie()Laravel 5.5 文件下载调用未定义方法 BinaryFileResponse::withCookie()
【发布时间】:2018-02-16 14:58:30
【问题描述】:

升级到 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。

【问题讨论】:

    标签: laravel laravel-5 laravel-5.4 laravel-5.5 laravel-response


    【解决方案1】:

    您应该验证CreateFreshApiToken.php 的作用。 Response::download 正在返回 Symfony\Component\HttpFoundation\BinaryFileResponse 并且此类没有 withCookie 方法。在 Laravel 5.4 中,它似乎完全一样。如果在 App\Http\Kernel.php 文件中包含此类代码以及您使用的中间件没有帮助。

    在这个 PR http://github.com/laravel/passport/pull/474 中,Laravel Passport 似乎有问题。您还可以查看http://github.com/laravel/passport/issues/489,如果可能作为临时修复,则可能从 Web 中间件中删除此路由并等待在 Laravel Passport 中进行修复

    【讨论】:

    • CreateFreshApiToken.php 来自 Passport:vendor\laravel\passport\src\Http\Middleware\CreateFreshApiToken.php。在调用 withCookie 之前有这一行: if($this->shouldReceiveFreshToken($request, $response))
    • @PeterMatisko 你在使用最新的 Passport 版本 (4.0.2) 吗?
    • @PeterMatisko 似乎在 github.com/laravel/passport/pull/474 中出现了问题。您还可以查看github.com/laravel/passport/issues/489,如果可能作为临时修复,可能从web 中间件中删除此路由
    • 我正在对护照功能进行一些逆向工程。似乎 $response 中的“cookies”是空的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2018-02-16
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多