Vue.jsとPhpで見積りシステム(3)〜CORS設定 編〜

laravel+Vue.js
この記事は約5分で読めます。
記事内に広告が含まれます。

Vue.jsとPhpで見積りシステムの関連記事リスト
Vue.jsとPhpで見積りシステム(1)〜設計・プロジェクト作成 編〜
Vue.jsとPhpで見積りシステム(2)〜Laravel導入 編〜
Vue.jsとPhpで見積りシステム(3)〜CORS設定 編〜
Vue.jsとPhpで見積りシステム(4)〜Vue.js導入 編〜
Vue.jsとPhpで見積りシステム(5)〜Vue.jsコーディング基本 編〜
Vue.jsとPhpで見積りシステム(6)〜Vue.jsコーディング拡張 編〜
Vue.jsとPhpで見積りシステム(7)〜バックエンドデータベース構築 編〜
Vue.jsとPhpで見積りシステム(8)〜Laravel−Admin導入 編〜
Vue.jsとPhpで見積りシステム(9)〜Laravel-Adminカスタマイズ 編〜


スポンサーリンク

mistumori-apiサーバのCORS設定

CORSとはCross-Origin Resource Sharingの頭文字でブラウザが別のサーバとやり取りする仕組みです。
この仕組を使ってユーザが利用するブラウザから別のサーバにある情報にアクセスしデータの取得や更新ができるようになります。
見積もりシステムではクライアントのブラウザ上からAPIサーバに向けて通信を行う必要があります。サーバ側がCORS設定されていないとcorsエラーで接続ができません。
※JSONPなどを使い別サーバの情報にアクセスする方式も有りましたがセキュリティの問題などで最近では使われていません。

Middlewareの作成

% php artisan make:middleware Cors

作成したMiddlewareの編集

% vi app/Http/Middleware/Cors.php

<?php

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)
    {
        return $next($request)
            ->header('Access-Control-Allow-Origin', '*')
            ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
            ->header('Access-Control-Allow-Headers', 'Content-Type');
    }
}

RouteMiddlewareに作成したcors.phpを追加

% vi app/Http/Kernel.php

・
・
    protected $routeMiddleware = [
        ・
        ・
        ・
      'cors' => \App\Http\Middleware\Cors::class,
    ];
・
・

Routes/api.phpのルートを修正

<?php

use Illuminate\Http\Request;

/<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::middleware(['cors'])->group(function () {
    // CPUの取得
    Route::get('cpu', 'ApiController@get_cpu');
    // マザーボード
    Route::get('mother_board/{cpu?}', 'ApiController@get_mother_board');
    // グラフィックカード
    Route::get('video_card', 'ApiController@get_video_card');
    // ハードディスク
    Route::get('storage', 'ApiController@get_storage');
    // ケース
    Route::get('pc_case','ApiController@get_pc_case');
    // 税率取得
    Route::get('tax','ApiController@get_tax');
});

以上で外部のサイトからAxiosで接続できるよになります。

コメント

タイトルとURLをコピーしました