You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9中AJAX未采用HTTPS的技术问题求助

解决Laravel 9中AJAX请求使用HTTP而非HTTPS的问题

问题背景

站点通过HTTPS访问,但Laravel生成的AJAX请求URL为HTTP,使用Cloudflare作为反向代理服务。

解决方案

1. 让Laravel正确识别Cloudflare的HTTPS请求

Laravel默认可能无法识别Cloudflare转发的HTTPS请求,需要配置信任代理:
编辑app/Http/Middleware/TrustProxies.php文件:

<?php

namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;

class TrustProxies extends Middleware
{
    // 生产环境建议替换为Cloudflare官方公布的IP段,避免信任所有代理
    protected $proxies = ['*'];

    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

Cloudflare会通过X-Forwarded-Proto头告知后端实际请求协议是HTTPS,配置后Laravel就能正确识别并生成HTTPS URL。

2. 强制Laravel生成HTTPS URL

方法一:配置环境变量

在项目根目录的.env文件中设置:

APP_URL=https://www.com

执行命令清除配置缓存:

php artisan config:clear

方法二:路由生成时指定HTTPS

修改Blade模板中的路由生成代码,强制使用HTTPS协议:

url: '{{ Route('research_filelist', ['doc_id' => $laboratory_documents->id, 'scheme' => 'https']) }}',

方法三:全局强制HTTPS

在app/Providers/AppServiceProvider.php的boot方法中添加代码,全局强制所有URL使用HTTPS:

public function boot()
{
    \URL::forceScheme('https');
}

3. 检查Cloudflare SSL配置

登录Cloudflare控制台,确保SSL/TLS模式设置为严格或灵活(推荐严格模式,需后端服务器已配置有效的SSL证书),确保Cloudflare正确转发HTTPS请求及相关头信息。

内容的提问来源于stack exchange,提问作者박종혁

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:21:05