これは厄介な問題ですが、私は知っていますが、2つの解決策があります。
1.
あなたはルートを呼び出すすべてのAPIのためのOPTIONSメソッドを定義し、それはあなたが以下のように作成したミドルウェアを渡します
Route::options('todos/{any?}', ['middleware' => 'cors', function(){return;}]);
Route::options('projects/{any?}', ['middleware' => 'cors', function(){return;}]);
あなたはLaravelコアクラスファイルをハック、 OPTIONS要求ごとにCORSヘッダーを渡すようにします。それはOPTIONSのためのCORSヘッダを渡すように、あなたは、次のように機能
protected function getRouteForMethods($request, array $methods)
{
if ($request->method() == 'OPTIONS') {
return (new Route('OPTIONS', $request->path(), function() use ($methods) {
return new Response('', 200, ['Allow' => implode(',', $methods)]);
}))->bind($request);
}
$this->methodNotAllowed($methods);
}
更新この機能を以下のでしょう
/vendor/laravel/framework/src/framework/Illuminate/Routing/RouteCollection.php
で
がためにそう
protected function getRouteForMethods($request, array $methods)
{
if ($request->method() == 'OPTIONS') {
return (new Route('OPTIONS', $request->path(), function() use ($methods) {
return new Response('', 200, [
'Allow' => implode(',', $methods),
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers' => 'X-Requested-With, Content-Type, X-Auth-Token, Origin, Authorization',
]);
}))->bind($request);
}
$this->methodNotAllowed($methods);
}
を要求します私は、両方のソリューションが正常に動作します。選択はあなたのものです。 しかし、ソリューション#2はLaravelコアをハックするものですが、Laravel自体をアップグレードすると問題が発生する可能性があります。しかし、少なくともそれはコーディングが少なくなっています。 :D
これらのソリューションが役立つことを願っています。
「機能しない」について詳しく説明してください。 –
XMLHttpRequestは[link](http://example.com)をロードできません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。したがって、 'http:// localhost:3000'はアクセスが許可されていません。このエラーは、postメソッドを使用してapiサーバーにアクセスしているときに発生しました。 –
@ArviPalmuこれまでに表示された問題の詳細を指定する必要があります。失敗した場合に終了するHTTP要求ヘッダーをいくつか表示すると、他のユーザーが表示されている内容をよく理解できるようになります。 – Codemole