一、问题现象
在安装使用最新版(0.8.7)版本的MrDoc时,出现了管理页面和个人页面显示异常的问题,
具体表现为在控制台页面菜单栏显示正常,但是内容页显示异常,提示“xxx.xxx.xxx拒绝了连接请求”
如下图:
二、问题原因
仔细查看了官方文档,和部署说明,多次尝试均未解决问题;自己感觉明显像跨域访问或者是ifream嵌入问题导致;所以打开页面调试工具,仔细排查日志信息。发现控制台有如下报错信息:
Refused to display 'https://doc.ifactory.top/' in a frame
because it set multiple 'X-Frame-Options' headers with conflicting values ('ALLOWALL, deny').
Falling back to 'deny'.
提示说是有多个X-Frame-Options配置信息,导致冲突。然后按提示查看请求头,果然是这样。
应该是是官方提供的config.ini文件配置方式并不会覆盖原有配置,导致两条配置同时存在,出现了冲突。但是不配置又不能解决跨域引用问题。
三、解决方式
后来想到,我的站点部署方式是由Nginx在前端做二级域名转发,应该可以通过Nginx做一定设置。搜索一下,果然有转发时重置X-Frame-Options的操作:在二级域名转发配置节点下添加一下配置。问题圆满解决。
location / {
#root html;
#index index.html index.htm;
proxy_pass http://com.ityj.frame;
proxy_hide_header X-Frame-Options; # 避免出现多个X-Frame-Options属性
add_header X-Frame-Options ALLOWALL; # 将之前网页的SAMEORIGIN属性给替换了,可以嵌套了
}
鸣谢:惊涛骇浪、同学的文章:使用Iframe时针对X-Frame-Options跨域问题的解决方案-Nginx(亲测有效)