在我的新项目中,当我将应用程序部署到https://域时,每个@echo off
setLocal EnableDelayedExpansion
SET "file=(C:\Users\astre\Desktop\test\fichier.c)"
SET /p NouvelVal= Entrez la fréquence que vous souhaitez entre 4Mhz et 24 MHz:
SET WordToSearch=#define HSE_VALUE((uint32_t)25000000)
SET Replacement=#define HSE_VALUE((uint32_t)%NouvelVal%)
for /f "tokens=* delims= " %%a in %file% do (
set str=%%a
set str=!str:%WordToSearch%=%Replacement%!
echo !str!>>test2.txt
)
type test2.txt>fichier.c
del test2.txt
pause
和每个{{ asset() }}
都通过http提供服务(这会导致“混合内容”问题)。 / p>
我将AWS与负载平衡的Elastic Beanstalk应用程序一起使用。
我尝试确保将{{ route() }}
正确设置为https,并且我知道我可以使用secure_asset或forceScheme,但是我不必在以前的项目中执行此操作我想知道为什么。
如何查看Laravel在哪里做出协议决定?我想找到问题的根源,而不是一味解决问题。
答案 0 :(得分:5)
这是一个简单的陷阱。如果您使用的是AWS,则需要更改配置。这非常简单,并且与往常一样,Laravel的文档提供了解决方案。您可以在这里阅读更多内容:
https://laravel.com/docs/5.6/requests#configuring-trusted-proxies
(作为AWS Elastic Beanstalk用户)我要做的就是编辑app/Http/Middleware/TrustProxies.php
:
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies = '*';
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
}
现在一切都很好。设置新项目时容易错过。
答案 1 :(得分:0)
我相信您正在寻找secure_asset。
这里是一个例子:
<link href="{{ secure_asset('assets/mdi/css/materialdesignicons.min.css') }}" media="all" rel="stylesheet" type="text/css" />
做对的更好解决方案(在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()
{
//
}
}