在 Serv00 免费空间安装 Flarum 后出现跨域错误(CORS,Cross-Origin Resource Sharing),通常是因为浏览器限制了不同域名或子路径间的资源请求。以下是分步解决方案:
1. 检查 Flarum 的 URL 配置
跨域问题最常见的原因是 Flarum 的 config.php
中配置的 URL 与实际访问地址不一致。
- 通过 Serv00 的 File Manager 打开文件路径:
/public_html/论坛目录/config.php
- 确保以下配置与你的实际访问地址 完全一致(注意结尾不要漏掉
/
):
'url' => 'https://你的用户名.serv00.net/论坛目录',
'paths' => [
'api' => 'api',
'admin' => 'admin',
],
- 如果使用子目录(如
forum
),URL 必须包含子目录路径(如 https://user.serv00.net/forum
)。
2. 配置 Apache 的 CORS 头(通过 .htaccess
)
Serv00 默认使用 Apache,需在网站根目录(或 Flarum 安装目录)的 .htaccess
中添加跨域头。
- 打开或创建
.htaccess
文件,在原有规则基础上添加以下内容:
# 允许所有域名跨域访问(测试用,正式环境建议指定域名)
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With"
# 原有 Flarum 伪静态规则保留
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^.*$ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
</IfModule>
- 注意:
- 若使用子目录(如
forum
),确保 .htaccess
文件位于该子目录内。
Access-Control-Allow-Origin "*"
为临时解决方案,正式环境应替换为具体域名(如 https://你的域名
)。
3. 检查 Serv00 的 HTTPS 配置
如果通过 HTTP 和 HTTPS 混合访问,浏览器会因协议不一致触发跨域拦截。
- 在 Serv00 控制面板中 强制开启 HTTPS:
进入 Websites
→ 选择域名 → 开启 Force HTTPS
。
- 更新 Flarum 的
config.php
中的 URL 为 https://
开头。
4. 清除浏览器缓存和 Flarum 缓存
- 浏览器缓存:按
Ctrl + Shift + R
(Windows)或 Cmd + Shift + R
(Mac)强制刷新。
- Flarum 缓存:通过 Serv00 的 File Manager 删除以下目录:
/public_html/论坛目录/storage/cache/*
(保留 cache/.gitignore
文件)
5. 验证 Serv00 的 PHP 扩展
确保 Serv00 的 PHP 环境已启用必要扩展(如 mbstring
),否则可能间接导致请求异常:
- 在 Serv00 控制面板中选择 PHP 版本(推荐 PHP 8.0+)。
- 检查扩展列表,确保以下扩展已启用:
mbstring
, pdo_mysql
, openssl
, json
, gd
, dom
。
6. 检查子目录嵌套问题
如果 Flarum 安装在子目录(如 public_html/forum
),但访问时 URL 未包含子目录(如直接访问 https://user.serv00.net
),会因路径不匹配触发跨域错误。
- 正确访问地址:
https://user.serv00.net/forum
- 错误访问地址:
https://user.serv00.net
(缺少子目录路径)。
7. 联系 Serv00 支持
若以上方法无效,可能是 Serv00 服务器限制了 Header 修改权限(免费空间可能存在此类限制)。
- 提交工单询问 Serv00 是否允许自定义 CORS 头。
- 提供具体错误信息(如浏览器控制台的报错截图)。
附:跨域错误常见表现
通过以上步骤,90% 的跨域问题可解决。若仍存在问题,建议提供具体的浏览器控制台报错截图或服务器日志(storage/logs
),以便进一步排查。