Laravel 5.5ドメイン間アクセスの設定

3359 ワード

apiインタフェースをするときに問題にぶつかって、ドメインを越えます!解決策はたくさんありますが、便利なのは1、2つです.投稿:http://blog.csdn.net/zhezhebie/article/details/78068009
1つ目は、最も便利なのは、middleWareを新規に作成し、このmiddlewareをグローバルミドルウェアに追加することです.すべてのリクエストは、このミドルウェアのフィルタリングを経ます.
php artisan make:middleware CrossHttp

そして"app"Http"Middleware"CrossHttp.phpというミドルウェアはhandleメソッドに次のコードを追加します.
   public function handle($request, Closure $next) {
        $response = $next($request);
        $response->header('Access-Control-Allow-Origin', '*');
        $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept');
        $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
        // $response->header('Access-Control-Allow-Credentials', 'true');
        return $response;
    }

すべてのドメインがこのインタフェースにアクセスできるようにするという意味です.ただし、セッションやクッキーを渡すことはできません.ドメイン名を指定してアクセスしたい場合は、次のように書きます.
$response->header('Access-Control-Allow-Origin', 'http://mytest.com');

         http://mytest.com       。 

ここまでまだ終わっていません.中間部品が建てられました.\app\Http\Kernel.phpに追加しなければなりません.そうしないと、発効しません.この時点で選択があります.グローバルに追加しますか、それともrouteGroupに追加しますか.これはあなたのアプリケーションに依存します.もしあなたのアプリケーションが完全にインタフェースで、ドメインをまたいでいるなら、nameはglobalに追加されます.次の図に示します.
Laravel 5.5设置跨域访问_第1张图片
いくつかのインタフェースがドメインをまたぐ必要がある場合は、次のrouteMiddleに書きます.
Laravel 5.5设置跨域访问_第2张图片
そして使うときはルートにこのミドルウェアの別名をつければいいです.
この方法は比較的簡単で直接的ですが、もし私が複数のドメイン名でインタフェースを使用するならば、すべてではありません.*openが多すぎて、1つのドメイン名があまりにも堅苦しいからです.どうすればいいですか.では、下を見続けます.
2つ目の方法:
サーバ側で文章を作成し、訪問したドメイン名を直接フィルタリングし、指定したドメイン名だけがこれらのインタフェースにアクセスできます.With .htaccess you can do it like this:

# ----------------------------------------------------------------------
# Allow loading of external fonts
# ----------------------------------------------------------------------

    
        SetEnvIf Origin "http(s)?://(www\.)?(google.com|staging.google.com|development.google.com|otherdomain.net|dev02.otherdomain.net)$" AccessControlAllowOrigin=$0
        Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    
, , Access-Control-Allow-Origin', '*'ですが、サーバ上ではドメイン名の一部しかアクセスできません.
参照リンク:
https://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains
https://stackoverflow.com/questions/25309318/best-method-access-control-allow-origin-multiple-origin-domains
3つ目の方法:corsプラグインパッケージを利用しますが、それは面倒そうで、私もテストしたことがありません.