Laravel 5.5ドメイン間アクセスの設定
3359 ワード
apiインタフェースをするときに問題にぶつかって、ドメインを越えます!解決策はたくさんありますが、便利なのは1、2つです.投稿:http://blog.csdn.net/zhezhebie/article/details/78068009
1つ目は、最も便利なのは、middleWareを新規に作成し、このmiddlewareをグローバルミドルウェアに追加することです.すべてのリクエストは、このミドルウェアのフィルタリングを経ます.
そして"app"Http"Middleware"CrossHttp.phpというミドルウェアはhandleメソッドに次のコードを追加します.
すべてのドメインがこのインタフェースにアクセスできるようにするという意味です.ただし、セッションやクッキーを渡すことはできません.ドメイン名を指定してアクセスしたい場合は、次のように書きます.
ここまでまだ終わっていません.中間部品が建てられました.
いくつかのインタフェースがドメインをまたぐ必要がある場合は、次のrouteMiddleに書きます.
そして使うときはルートにこのミドルウェアの別名をつければいいです.
この方法は比較的簡単で直接的ですが、もし私が複数のドメイン名でインタフェースを使用するならば、すべてではありません.*openが多すぎて、1つのドメイン名があまりにも堅苦しいからです.どうすればいいですか.では、下を見続けます.
2つ目の方法:
サーバ側で文章を作成し、訪問したドメイン名を直接フィルタリングし、指定したドメイン名だけがこれらのインタフェースにアクセスできます.With .htaccess you can do it like this:
参照リンク:
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プラグインパッケージを利用しますが、それは面倒そうで、私もテストしたことがありません.
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に追加されます.次の図に示します.いくつかのインタフェースがドメインをまたぐ必要がある場合は、次のrouteMiddleに書きます.
そして使うときはルートにこのミドルウェアの別名をつければいいです.
この方法は比較的簡単で直接的ですが、もし私が複数のドメイン名でインタフェースを使用するならば、すべてではありません.*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プラグインパッケージを利用しますが、それは面倒そうで、私もテストしたことがありません.