2017-08-29 16 views
0

私はLaravelとAPIを作成し、私は私が作るしようとしているイオン2プロジェクトLaravelのAPIとイオン2クライアント:CORSいいえ「アクセス制御 - 許可 - 起源」ヘッダ

でそれを使用しよう私のLaravel APIにリクエストをGETしてください。

私は

auth/{prodiver}/callback/{userID}/{accessToken} 

に私のhttp要求は、私はこのエラーを得ます

Failed to load http://api.url.net/api/auth/facebook/callback/XXXX/MY_TOKEN: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8001' is therefore not allowed access.

は私のルートは、次のようになります。

Route::group(['middleware' => ['guest', 'cors']], function() { 
    Route::get('test', function() { 
     return response()->json('{dummy.data}', 200); 
    }); 

    Route::get('auth/{prodiver}/callback/{userID}/{accessToken}', '[email protected]')->middleware('cors')->name('social.auth'); // social auth 
}); 

しかし、私がしようとすると、同じコード、ルートtestと、それは動作し、私はデータを取得しました...

"facebook connect"は問題ではなく、成功コールバックがトリガーされます。

はここcallback()方法

public function callback($provider, $userID, $accessToken) 
{ 
    if ($provider == "facebook"){ 
     $user = $this->createOrGetUser($userID, $accessToken); 
     auth()->login($user); 
     return response()->json($user, 200); 
    } 
} 

他のすべてのHTTP要求を完璧に動作している...ここで

は、「私はドン(イオンプロジェクトで)心配http要求

let headers = new Headers(); 
headers.append('Content-Type', 'application/json'); 
let url = this.baseApiUrl+'auth/facebook/callback/' + userID + '/' + accessToken; 
this.http 
    .get(url, {headers: headers}) 
    .map(res => res.json()) 
    .subscribe(data => { 
      console.log(data) 
     }, err => { 
      this.onError(err); 
     } 
    ); 

です何が起こっているのか理解している、誰かが手がかりを持っている?私は完全にこのエラーに疲れています:/

ありがとう! :)

+0

あなたは 'cors'ミドルウェアについて言及しました。 'barryvdh/laravel-cors'はどのパッケージを使用していますか?正しく設定しましたか? –

+0

はい、私は設定をどこでも "*"どこでも、developementのためにします... – Doddo

+1

[No 'アクセス制御許可元]ヘッダーの可能な複製 - Laravel 5.4](https://stackoverflow.com/questions/43565877/no-access-control-allow-origin-header-laravel-5-4) – Demonyowh

答えて

1

まず、第2のルートを定義するときに、なぜcorsミドルウェアを設定するのですか?すでにグループ全体に設定されています。

第2に、corsはコードに何らかのエラーがある場合に備えてcorsエラーを返します。これはその動作です。

When an error occurs, the middleware isn't run completely. So when this happens, you won't see the actual result, but will get a CORS error instead.

コードをデバッグしてバグを見つけようとします。テストはデータを返します。これはエラーが発生したcorsではないことを意味します。これはあなたのコードです。

+0

こんにちは、あなたの答えをありがとう。 CORSミドルウェアをルートとグループに配置し、ミドルウェアが「アクティブ」であることを確認するだけです... エラーを見つけるために自分のコードをチェックします。ありがとう:) – Doddo

+0

ミドルウェアについて正しいところはどこですか?私のスクリプトにはエラーがありました...しかし、私は今 "プリフライトリクエスト"に他の問題があります: – Doddo

関連する問題