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

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,提问作者ابراهيم عثاملة

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:38:21