Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在以angular4为前端的Laravel Lumen 5.5.2中为选项飞行前请求添加CORS标头_Php_Angular_Laravel_Lumen - Fatal编程技术网

Php 如何在以angular4为前端的Laravel Lumen 5.5.2中为选项飞行前请求添加CORS标头

Php 如何在以angular4为前端的Laravel Lumen 5.5.2中为选项飞行前请求添加CORS标头,php,angular,laravel,lumen,Php,Angular,Laravel,Lumen,我正在本地主机\8080上运行laravel lumen php frameowrk 5.5.2。我正在本地主机\4200上运行angular4 frontend。当我运行我的应用程序时,我可以通过angular连接到一些LaravelAPI并获取数据,还可以对这些API进行更改。但是,当我尝试通过前端连接到Laravel中的其他一些API时,我在浏览器控制台中遇到了以下错误:“从源站“”访问“”处的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资

我正在本地主机\8080上运行laravel lumen php frameowrk 5.5.2。我正在本地主机\4200上运行angular4 frontend。当我运行我的应用程序时,我可以通过angular连接到一些LaravelAPI并获取数据,还可以对这些API进行更改。但是,当我尝试通过前端连接到Laravel中的其他一些API时,我在浏览器控制台中遇到了以下错误:“从源站“”访问“”处的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。”

因此,我参考了此链接,并对Laravel后端服务器代码进行了相应的更改,如他们所述:

但是,当我通过angular连接到Laravel API时,现在我得到了以下错误: CORS策略已阻止从源“”访问“”处的XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态

另外,我是否必须对角度前端代码进行任何更改? 我不能前进,因为这个CORS阻止…任何帮助将不胜感激

这是我在Laravel中的CorsMiddleware.php文件:

使用闭包

类Corsmidware {

}

这是我在Laravel中的CatchAllOptionsRequestsProvider.php文件:

/** *如果传入请求是选项请求 *我们将为请求的路由注册一个处理程序 */

类CatchAllOptionsRequestsProvider扩展了ServiceProvider{

public function register()
{
    $request = app('request');

    if ($request->isMethod('OPTIONS'))
    {
       app()->options($request->path(), function() { return response('', 
       200); 
    });
}
}

这是我注册提供商和Cors中间件的app.php文件:

$app->register(app\Providers\catchalloptionrequestsprovider::class)

$app->routeMiddleware(['auth'=>app\Http\Middleware\Authenticate::class,])

$app->middleware([app\Http\middleware\corsmidleware::class])

执行以下操作:

1。创建中间件

<?php

namespace App\Http\Middleware;

use Closure;

class CorsMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $headers = [
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Methods'     => 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Max-Age'           => '86400',
            'Access-Control-Allow-Headers'     => 'Content-Type, Authorization, X-Requested-With'
        ];

        if ($request->isMethod('OPTIONS'))
        {
            return response()->json('{"method":"OPTIONS"}', 200, $headers);
        }

        $response = $next($request);
        foreach($headers as $key => $value)
        {
            $response->header($key, $value);
        }

        return $response;
    }
}
对于lumen,请在bootstrap/app.php中执行此操作

 $app->middleware([
      App\Http\Middleware\CorsMiddleware::class
 ]);
完成

protected $middleware  = [
//...... other middlewares
\App\Http\Middleware\CorsMiddleware::class
];
 $app->middleware([
      App\Http\Middleware\CorsMiddleware::class
 ]);