【发布时间】:2019-09-05 21:15:08
【问题描述】:
当尝试从 React 应用程序使用 API(本地托管)登录时,我每次都会收到此错误:
我知道有很多关于这个主题的主题,但没有一个对我有帮助。也许是因为我错过了一些东西,或者不明白这个概念。
我不知道如何解决这个问题。
我已经尝试过的事情:
- 添加了一个 HTTP 中间件(代码如下):没用。
- 尝试使用 spatie/laravel-cors 包修复它:没用。
- 尝试使用barryvdh/laravel-cors 修复它:也没有用。
我没有想法。有人知道我做错了什么吗?
我的代码
protected $middleware = [
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
\Spatie\Cors\Cors::class, // <-- this line would be pointed to my own middleware when that would be in use
];
如果我在哪里使用自己的中间件,则指向以下代码而不是 \Spatie\Cors\Cors::class
class ApiCors
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, PATCH')
->header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
}
}
【问题讨论】:
-
你是在 api 服务器上做的,对吧?
-
是的,我是@Styx
-
你没有忘记
vendor:publishCorsServiceProvider(如果是spatie/laravel-cors),对吧? -
@Styx 确实有效。谢谢!但是你知道为什么它现在可以工作,而不是我尝试应用的中间件吗?我不想依赖外部依赖。
-
老实说,不知道。我只是尝试在新制作的项目中使用您的代码使用
ApiCors中间件,它按预期工作。也许您忘记注释掉VerifyCsrfToken中间件或添加\App\Http\Middleware\ApiCors::class?
标签: reactjs laravel api cors axios