8

asset以下のようなヘルパー関数を使用します。

<script src="{{ asset('/assets/js/jquery-2.1.1.min.js') }}"></script>

取得します

<script src="http://xxx.xxx.com/assets/js/jquery-2.1.1.min.js"></script>

それを可能にするlaravel組み込みソリューションはありますか

<script src="//xxx.xxx.com/assets/js/jquery-2.1.1.min.js"></script>

httphttpsプロトコルで適切に表示されますか?

[編集]

通常、Laravel はプロトコルを正しく検出しますが、ロード バランサーの背後では検出されません。だから私はまだこれに対する解決策を探しています。

4

8 に答える 8

5

Laravel は、リクエストが保護されていると見なされる場合にのみ、保護されたリンクを作成します。

Laravel には、「信頼できるプロキシ」からの非 https トラフィックを「安全な」ものとして扱う方法がすでにあります。

このような信頼できるプロキシは、次のようにアプリケーション サービス プロバイダーで宣言できます。

 Request::setTrustedProxies(array( '199.27.128.0/21', 'some other range'));

また、ロードバランサーが次のヘッダーを正しく設定していることを確認してください。

Host, X-Forwarded-Host, X-Forwarded-Port, X-Real-IP, X-Forwarded-For and X-Forwarded-Proto

クラウドフレアなどの「パブリック」プロキシは、すでにこれを行っています。

基本的にここでのポイントは、クライアント接続がフロントエンド サーバーの 1 つ (プロキシとして機能する) で終了することです。したがって、laravel がローカルで読み取った値の代わりにプロキシ サーバーからのヘッダーを使用するように、そのサーバーからの通信を信頼できるものとして宣言する必要があります。

これにより、Request::isSecure() や Request::ip() などの関数が一貫した結果を返すことができるようになります。

于 2016-10-07T09:33:27.767 に答える
1

私は同じ問題を抱えていましたが、asset() メソッドには、SSL 要求に対してオプションの 2 番目の変数 true または false があることを発見しました。

私が使用する解決策は次のとおりです。

<link rel="stylesheet" href="{{ asset('assets/bootstrap/3.3.7/css/bootstrap.min.css', !App::isLocal()) }}" />

<script type="text/javascript" src="{{ asset('assets/parsley/2.4.4/parsley.min.js', !App::isLocal()) }}"></script>

知らせ:

!App::islocal()

アプリケーション環境がローカルの場合、SSL は選択されませんが、運用環境ではアセットは SSL 経由で呼び出されます。

于 2016-10-11T15:20:13.237 に答える
1

Laravel は、アセットの URL を、サイトの読み込みに使用されたプロトコルに自動的に変更します。

サイトが安全な接続を介して読み込まれる場合、アセット リンクは自動的に https を使用します。

アップデート:

のみでアセットを表示したい場合は//、独自のHTML マクロを記述できます。

于 2014-12-19T09:38:39.073 に答える
0

asset() は、リクエストの現在のスキーム (HTTP または HTTPS) を使用してアセットの URL を生成します。

また、cdn URL のように http や https がわからない外部 URL を提供したい場合は、以下のように記述できます。

<script src="{!! asset('//code.jquery.com/jquery-2.1.1.min.js') !!}"></script>

ただし、次のように書くことができます

<script src="//{!! Request::server ('HTTP_HOST').'/assets/js/jquery-2.1.1.min.js' !!}"></script>

また

<script src="{!! asset('//'.Request::server ('HTTP_HOST').'/assets/js/jquery-2.1.1.min.js') !!}"></script>
于 2016-10-11T06:35:02.323 に答える
0

この記事http://ankitpokhrel.com/explore/overriding-base-url-in-laravel-5/を確認してください。基本的url()に、関数をオーバーライドして、代わりに次のAppServiceProviderようなURLを生成できます/assets/something.jshttp://example.com/assets/something.js

于 2016-10-07T14:41:09.340 に答える
0

アセット URL を生成するコードは、illuminate/Routing/UrlGenerator.php にあります。

必要なことを行うために簡単に変更できる forceSchema() メソッドがありますが、正直なところ、この機能はおそらく Laravel にあるはずであり、github でプル リクエストを送信する価値があるかもしれません。

于 2014-12-19T09:40:45.297 に答える