2015-12-20 30 views
6
में https के साथ लोड ब्लेड संपत्ति

मैं अपने सीएसएस इस प्रारूप का उपयोग लोड हो रहा हूँ: <link href="{{ asset('assets/mdi/css/materialdesignicons.min.css') }}" media="all" rel="stylesheet" type="text/css" /> और इसके लिए सभी को एक HTTP अनुरोधLaravel

लेकिन जब मैं SSL (https) के साथ अपना लॉगिन पृष्ठ लोड, मैं ठीक से लोड करता है ...page... was loaded over HTTPS, but requested an insecure stylesheet 'http...

क्या कोई मुझे बता सकता है कि मैं http के बजाय https पर ब्लेड लोड संपत्ति कैसे बना सकता हूं?

क्या मुझे संपत्तियों को सुरक्षित रूप से लोड करने का प्रयास करना चाहिए? या यह ब्लेड का काम नहीं है?

उत्तर

21

मुझे विश्वास है कि secure_asset वह है जिसे आप ढूंढ रहे हैं।

<link href="{{ secure_asset('assets/mdi/css/materialdesignicons.min.css') }}" media="all" rel="stylesheet" type="text/css" /> 
+1

धन्यवाद, मैं वास्तव में क्या देख रहा था :) – Grigio

+0

अच्छा, धन्यवाद :) – Sambhav

3

एक अन्य दृष्टिकोण true दूसरा पैरामीटर के रूप में पारित करने के लिए किया जाएगा।

/** 
* Generate an asset path for the application. 
* 
* @param string $path 
* @param bool $secure 
* @return string 
*/ 
function asset($path, $secure = null) 
{ 
    return app('url')->asset($path, $secure); 
} 

आप secure_asset नीचे देखें के रूप में बस दूसरा पैरामीटर true साथ asset कहता है।

/** 
* Generate an asset path for the application. 
* 
* @param string $path 
* @return string 
*/ 
function secure_asset($path) 
{ 
    return asset($path, true); 
} 
+1

वैकल्पिक सुझाव के लिए धन्यवाद :) – Grigio

+0

:) आपका स्वागत है! –

8

मैं जब यह HTTP प्रोटोकॉल के माध्यम से संसाधनों को लोड है, जब वेबसाइट HTTPS का उपयोग करके किया गया था, जो "मिश्रित सामग्री" समस्या के कारण होता है asset समारोह के साथ एक समस्या थी।

यह ठीक करने के लिए कि आपको फ़ाइल में \URL::forceScheme('https') जोड़ने की आवश्यकता है।

तो मेरा इस तरह दिखता है (Laravel 5.4):

<?php 

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 

class AppServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     if(env('APP_ENV') == 'production') { 
      \URL::forceScheme('https'); 
     } 
    } 

    /** 
    * Register any application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 

यह जब आप केवल सर्वर (env('APP_ENV') == 'production') और नहीं localy पर https आवश्यकता है, तो https का उपयोग करना asset समारोह के लिए मजबूर करने की जरूरत नहीं है उपयोगी है ।

+0

यह एक बेहतर उत्तर है, क्योंकि मैं केवल उत्पादन सर्वर पर https का उपयोग करना चाहता हूं –

1

यहां एचटीटीपीएस संपत्तियों के साथ काम करने के लिए मेरी कॉन्फ़िगरेशन है। उत्पादन में इसे सक्षम करने के लिए .env फ़ाइल में REDIRECT_HTTPS = true जोड़ें।

<?php 

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 
use Illuminate\Support\Facades\Schema; 

class AppServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     if(env('REDIRECT_HTTPS')) 
     { 
      \URL::forceScheme('https'); 
     } 

     Schema::defaultStringLength(191); 
    } 

    /** 
    * Register any application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 
0

मैं यह समाधान भी सभी मार्गों के लिए https दिखाने के लिए काम किया है उपयोग \URL::forceScheme('https'); द्वारा @Scofield जवाब का उपयोग, लेकिन यह $ अनुरोध> यूआरएल (के लिए मेरे लिए काम नहीं किया) यह https के बजाय http दिखाने

तो मैं $this->app['request']->server->set('HTTPS', true); बजाय \URL::forceScheme('https');

इस्तेमाल किया मैं Laravel 5.4 उपयोग कर रहा हूँ और अद्यतन करें।env फ़ाइल और appserviceproviders

<?php 

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 
use Illuminate\Support\Facades\Schema; 
use Log; 

class AppServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    * 
    */ 
    public function boot() 
    { 
     If (env('APP_ENV') !== 'local') { 
      $this->app['request']->server->set('HTTPS', true); 
     } 

     Schema::defaultStringLength(191); 
    } 

    /** 
    * Register any application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 
मेरी env फ़ाइल में

मैं env रन बदलने के बाद सर्वर

काम करने के लिए स्थानीय होस्ट APP_ENV = विकास/उत्पादन के लिए बदल दिया है

APP_ENV=local to APP_ENV=development 

APP_ENV = स्थानीय यह कारीगर कमांड

php artisan config:clear 

घर यह मदद करता है :-)