我收到以下错误(在每一页上)
app.js:703 混合内容:“ https://sitename.com/ ”页面已通过 HTTPS 加载,但请求了不安全的 XMLHttpRequest 端点“ http://sitename.com/index.php/getMessages ”。此内容也应通过 HTTPS 提供。
该网站是用 Laravel 构建的。有没有人知道如何解决这个错误?
sha*_*ons 20
就我而言,这是因为我不知道该asset()
函数没有自动处理 https(正如frankfurt-laravel 的回答所指出的那样)。
为了解决这个问题,因为我在 dev 中不使用 SSL,所以我ASSET_URL
在 .env 中将 https url 设置为:
APP_URL=https://example.com
ASSET_URL="${APP_URL}"
Run Code Online (Sandbox Code Playgroud)
这会覆盖asset()
使用 https url 的函数,而根本无需修改该函数。有关更多上下文,请参阅文档。
Vin*_*ngh 19
如果您要将网站从 HTTP 迁移到 HTTPS,并且它在 HTTP 上运行得很好,并且您已在 config/app.php 和 .env 文件中添加了带有 https 的新 URL,那么您可能需要添加以下内容在 app/Providers/AppServiceProvider.php 文件的启动函数中添加代码片段,不要忘记添加“use Illuminate\Support\Facades\URL;” 在文件顶部修复此错误。 请检查附件以获得更好的示例代码
use Illuminate\Support\Facades\URL;
public function boot()
{
URL::forceScheme('https');
}
Run Code Online (Sandbox Code Playgroud)
我建议使用$secure
Laravel(5.6 肯定有)提供的方法参数:
当您使用资产加载时,例如
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)
asset()
如果您有某种高级 IDE,则可以查找 的定义。如果没有,请检查此文件helpers.php
。
但是,文档说
/**
* Generate an asset path for the application.
*
* @param string $path
* @param bool $secure
* @return string
*/
Run Code Online (Sandbox Code Playgroud)
所以你只需要true
作为第二个参数传递,然后以安全的方式加载资源。对于上面的例子,它将是
<!-- Scripts -->
<script src="{{ asset('js/app.js',true) }}" defer></script>
<!-- Styles -->
<link href="{{ asset('css/app.css', true) }}" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用 ,这将导致冲突php artisan serve
,因为 artisan 无法通过 HTTPS 协议提供服务。因此,您需要 HTTPS 设置,例如在 MacOS上使用Valet或在 Windows上使用Homestead。按照链接了解设置详细信息。
希望这有帮助,请让我知道它是否有效。
小智 0
在您的 .env 文件中将 url 设置为 httpsAPP_URL=https://sitename.com
并在 config/app.php 中将 url 设置为'url' => env('APP_URL', 'APP_URL=https://sitename.com'),
应该可以解决您的问题
归档时间: |
|
查看次数: |
17167 次 |
最近记录: |