Flutter无法从共享主机服务器获取数据,Postman可正常请求求助
Laravel共享主机Flutter无法获取数据的服务器端解决方案
1. 验证.env配置正确性
- 确认
APP_URL设置为共享主机的完整域名(如https://your-domain.com,无需包含/public后缀) - 生产环境下将
APP_ENV设为production,APP_DEBUG设为false - 核对数据库连接参数:
DB_HOST(共享主机通常为localhost或专属主机名)、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD必须与主机提供商给出的信息完全一致
2. 修复.htaccess规则
主目录.htaccess(转发请求到public目录)
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
public目录.htaccess(Laravel默认重写规则)
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # 处理Authorization请求头 RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 移除末尾斜杠 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # 转发请求到前端控制器 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
- 通过Cpanel的「Apache模块」确认已开启
mod_rewrite功能
3. 调整目录权限
- 将
storage和bootstrap/cache目录权限设为755,目录内文件设为644 - 确保web服务器用户(通常为
nobody或apache)对上述目录拥有读写权限
4. 清除Laravel缓存
- 通过Cpanel终端执行以下命令:
php artisan config:cache php artisan route:cache php artisan view:cache
- 若无法使用终端,可在
public目录创建临时脚本执行缓存清除,执行后删除该脚本:
<?php require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class); $kernel->handle( new Symfony\Component\Console\Input\ArrayInput(['command' => 'config:cache']), new Symfony\Component\Console\Output\NullOutput ); $kernel->handle( new Symfony\Component\Console\Input\ArrayInput(['command' => 'route:cache']), new Symfony\Component\Console\Output\NullOutput ); echo "缓存清除完成"; ?>
5. 排查跨域问题
- 若Flutter应用与API不在同一域名下,需配置CORS:
- 安装
barryvdh/laravel-cors包,发布配置文件并指定允许的域名、请求方法 - 或在
public/.htaccess中添加跨域响应头(生产环境建议限制具体域名,不要用*):
- 安装
Header set Access-Control-Allow-Origin "https://your-flutter-app-domain.com" Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" Header set Access-Control-Allow-Headers "Content-Type, Authorization"
6. 查看错误日志定位问题
- 打开
storage/logs/laravel.log文件,里面会记录具体错误信息(如数据库连接失败、路由未定义等),根据日志精准排查问题
内容的提问来源于stack exchange,提问作者ابراهيم عثاملة
相关产品推荐
相关产品推荐

