常见适配问题汇总
新版谷歌浏览器(版本100及以上)对Cookie安全、资源加载、跨域访问有更严格的限制,迅睿CMS默认配置未适配新规则,常见问题如下:
- 后台登录页完全空白,无法显示账号密码输入框
- 内置/第三方编辑器无法加载,内容编辑区域空白
- 文件、图片上传触发跨域错误,无法完成上传
- iframe嵌套页面被拦截,会话丢失自动退出登录
前置准备
- 网站服务器读写权限,可修改迅睿CMS核心配置、站点服务器配置
- 最新版谷歌浏览器,用于调试验证优化结果
- 本文操作适配迅睿CMS 4.x全版本,低版本操作流程完全一致
分步适配优化实操
1. 修复SameSite Cookie问题(解决登录空白、会话丢失)
新版谷歌浏览器要求跨站场景下Cookie必须明确标注SameSite属性,未标注的会被浏览器拦截,导致会话丢失,操作步骤如下:
- 第一步:打开网站根目录下的config/domain.php配置文件,在原有返回数组中新增以下3行配置,无需覆盖原有内容,完整示例如下:
```php
return [
// 原有配置保留,新增以下3行内容
'cookie_httponly' => true,
'cookie_samesite' => 'None',
'cookie_secure' => true,
];
```
注意:HTTP网站请将cookie_secure的值改为false,HTTPS网站保持true即可
- 第二步:修改站点服务器配置,Nginx用户打开站点配置文件,在server块内新增以下配置:
```nginx
proxy_cookie_path / "/; secure; SameSite=None";
```
- Apache用户在网站根目录的.htaccess文件中新增以下配置:
```apache
Header always edit Set-Cookie (.) "$1; SameSite=None; Secure"
```
修改完成后重载服务器配置(Nginx执行nginx -s reload,Apache重启服务即可)。
2. 修复编辑器加载失败问题

HTTPS网站下,谷歌浏览器会拦截未加密的HTTP资源,迅睿CMS默认编辑器如果使用了HTTP资源会无法加载,操作步骤:
- 第一步:登录迅睿CMS后台,进入系统->系统设置->客户端域名设置
- 第二步:将静态资源URL修改为完整的HTTPS地址,例如原来为
//你的域名,修改为https://你的域名,保存配置
- 第三步:如果使用UEditor编辑器仍无法加载,打开编辑器配置文件content/editors/ueditor/ueditor.config.js,修改
serverUrl为完整HTTPS地址:
```javascript
// 修改为你自己的域名
serverUrl: 'https://你的域名/content/editors/ueditor/php/controller.php',
```
3. 修复跨域上传访问问题
如果使用CDN、独立静态域名,新版谷歌浏览器会严格校验跨域权限,需要添加CORS响应头,操作步骤:
```nginx
add_header Access-Control-Allow-Origin ;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = OPTIONS) {
return 204;
}
```
- Apache用户在根目录.htaccess文件新增以下配置:
```apache
Header set Access-Control-Allow-Origin ""
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Access-Control-Allow-Headers "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization"
```
配置完成后,进入迅睿CMS后台点击系统->更新缓存->更新全部缓存,配置即可生效。
4. 修复iframe页面拦截问题
如果你的站点被其他网站通过iframe嵌套,需要额外添加配置:
- 打开网站根目录的index.php,在
defined('FCPATH') or exit('No direct script access allowed');之后新增以下代码:
```php
ini_set('session.cookie_samesite', 'None');
ini_set('session.cookie_secure', isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 1 : 0);
ini_set('session.cookie_httponly', 1);
```
- Nginx站点配置中新增允许iframe嵌套的头信息:
```nginx
add_header X-Frame-Options "ALLOW-FROM 你的允许嵌套域名";
add_header Content-Security-Policy "frame-ancestors 你的允许嵌套域名";
```
优化结果验证步骤
全部配置完成后,按以下步骤验证适配效果:
- 1. 打开谷歌浏览器隐身窗口,访问后台登录页,可正常显示登录框,登录后无空白跳转即为正常
- 2. 进入内容编辑页,确认编辑器工具栏正常显示,上传图片可成功保存即为正常
- 3. 按F12打开开发者工具,切换到Console面板,没有红色的SameSite、跨域、混合内容报错即为优化完成
常见问题排查
- 修改配置后仍然报错:检查SSL证书是否有效,HTTPS配置是否正常,HTTP网站必须把cookie_secure改为false才能正常生效
- 登录后自动退出:检查是否重复添加了SameSite配置,重复添加会导致Cookie格式错误,删除多余配置后重载服务器即可
- 编辑器仍然空白:检查开发者工具Network面板,找到状态为红色的HTTP资源,把资源地址修改为HTTPS即可解决