Php 如何在以angular4为前端的Laravel Lumen 5.5.2中为选项飞行前请求添加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{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策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资
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
]);