Laravel 5:尝试通过API访问数据时调用未定义的方法Response::header()?
我用Laravel和CORS中间件构建了一个APILaravel 5:尝试通过API访问数据时调用未定义的方法Response::header()?,api,laravel-5,cors,access-control,Api,Laravel 5,Cors,Access Control,我用Laravel和CORS中间件构建了一个API <?php namespace App\Http\Middleware; use Closure; class Cors { public function handle($request, Closure $next) { return $next($request) ->header('Access-Control-Allow-Origin', '*')
<?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-XSRF-TOKEN');
}
}
通过这种方式尝试,这将修复CORS问题,并将其声明到类的构造函数中。它会让你的API工作
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
public function __construct(Request $request) {
$request->header('Access-Control-Allow-Origin', '*');
$request->header('Content-Type', 'text/plain');
}
}
我知道这有点晚了,但我在使用Symfony\Component\HttpFoundation\streamdresponse时遇到了类似的问题
正如你所说,问题在于
调用未定义的方法…::标题()
因此,对象上显然不存在标题
方法
对我来说,解决方案是使用headers
方法,它返回\Symfony\Component\HttpFoundation\ResponseHeaderBag
像这样使用它:
公共函数句柄($request,Closure$next)
{
$response=$next($request);
$response->headers->set('Access-Control-Allow-Origin','*');
$response->headers->set('Access-Control-Allow-Methods','GET、POST、PUT、PATCH、DELETE、OPTIONS');
$response->headers->set('Access-Control-Allow-headers','Content-Type,Authorization,X-XSRF-TOKEN');
返回$response;
}