我正在用Lumen编写API。使用axios在ReactJS中所有的GET API都可以正常工作。但是,POST API无法正常工作。我通过创建中间件并在web.php路由文件中使用它们在Lumen中启用了cors。但是,仍然出现相同的错误。我无法调试来自客户端或服务器端的问题。
<?php
/**
* Location: /app/Http/Middleware
*/
namespace App\Http\Middleware;
use Closure;
class Cors{
/**
* 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;
}
}
Register the middleware in bootstrap/app.php
$app->routeMiddleware([
'auth' => App\Http\Middleware\Authenticate::class,
'localization' => \App\Http\Middleware\Localization::class,
'cors' => App\Http\Middleware\Cors::class
]);
Finally, I put the requests in middleware
$router->group(['middleware' => ['cors']], function () use ($router) {
# Login API's
$router->post('/login', 'LoginController@index');
$router->post('/register', 'UserController@register');
$router->get('/user/{id}', ['middleware' => 'auth','uses' => 'UserController@get_user']);
});
But, the above solution is not working.
----------------错误--------------------- 从源“ http://localhost:8000/login”对“ http://localhost:3000”处XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:无“ Access-Control-Allow-Origin”标头存在于请求的资源上。 0.chunk.js:10190 POST http://localhost:8000/login net :: ERR_FAILED