我正在使用 Laravel 5.6 和这个中间件来允许 Ionic 应用程序调用我的 API
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, X-XSRF-TOKEN');
}
}
Run Code Online (Sandbox Code Playgroud)
因此,这会导致我强制下载文件的两个请求出现错误。
Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::header()
Run Code Online (Sandbox Code Playgroud)
我的要求1
return Excel::download(new \App\Exports\FleetExport($fleetId), 'debts.xlsx');
Run Code Online (Sandbox Code Playgroud)
我的要求2
return \Response::download($file_path,
$file_name,
array('Content-Type: application/octet-stream','Content-Length: '. filesize($file_path))
)->deleteFileAfterSend(true);
Run Code Online (Sandbox Code Playgroud)
禁用这个中间件可以使我的请求正常工作。
难道我做错了什么?
您可以尝试调整您的中间件以直接在 Response 的标头包上设置标头:
$response = $next($request);
$response->headers->add([
'Access-Control-Allow-Origin' => '*',
...
]);
return $response;
Run Code Online (Sandbox Code Playgroud)
所有来自的响应都应该从基础 Symfony Response 扩展而来,它有一个公共$headers属性,即HeaderBag. 所以这应该适用于所有响应。
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |