【发布时间】:2021-06-08 00:09:38
【问题描述】:
当 Axios 将 GET HTTP 发送到我的 Lumen 应用程序时,我遇到了这个 CORS 问题,发送 POST HTTP 似乎很好。我有这个处理 CORS 的中间件,下面是代码
<?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;
}
}
然后添加到bootstrap/app.php
$app->middleware([
App\Http\Middleware\CorsMiddleware::class, // cors middleware
]);
使用 POST 请求时,一切正常,但在执行 GET 请求时,会发生 CORS 错误。任何帮助,想法都非常感谢,在此先感谢。
我的前端应用在 http://localhost:3000 (NUXT) 上运行,而 Lumen 应用在 http://localhost:8000 上运行
【问题讨论】:
-
你能分享一下CORS错误信息吗?
-
@MuhammadDyasYaskur "从源 'localhost:3000' 访问 XMLHttpRequest 在 'localhost:3000' 已被 CORS 策略阻止:请求中不存在 'Access-Control-Allow-Origin' 标头资源。”
-
这恰好是因为lumen不允许OPTIONS方法,所以我们需要显式添加。
-
@AnkitJindal 你能指导我如何添加它吗?
-
@JuliverGalleto 请标记适合您的解决方案,以便帮助其他面临类似问题的人。谢谢!!
标签: laravel axios lumen lumen-8