我使用Laravel 5.6和这个中间件允许Ionic应用程序调用我的API的
<?php
namespace AppHttpMiddleware;
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');
}
}
所以这导致了两个请求的错误,我正在强制下载文件。
Call to undefined method SymfonyComponentHttpFoundationBinaryFileResponse::header()
我的请求1
return Excel::download(new AppExportsFleetExport($fleetId), 'debts.xlsx');
我的请求2
return Response::download($file_path,
$file_name,
array('Content-Type: application/octet-stream','Content-Length: '. filesize($file_path))
)->deleteFileAfterSend(true);
禁用这个中间件可以使我的请求正常工作。
我做错什么了吗?
您可以尝试调整中间件,直接在响应的头包上设置头:
$response = $next($request);
$response->headers->add([
'Access-Control-Allow-Origin' => '*',
...
]);
return $response;
所有通过的响应都应该从基本Symfony响应扩展,该响应具有作为HeaderBag
的公共$headers
属性。因此,这应该适用于所有的回应。