Laravel 5:尝试通过API访问数据时调用未定义的方法Response::header()?

Laravel 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', '*')

我用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', '*')
            ->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;
}