在宜搭的报表设计器中设计了一个报表,生成一个https://XXX.aliwork.com/XXX 的链接作为iframe嵌入至内部系统中,授权登录后有跨域问题,显示refused to display in a frame beacuse it set 'X-Frame-Options’ to 'SAMEORIGIN',如何解决?
您好,这个错误消息表示目标网页设置了 X-Frame-Options 为 SAMEORIGIN,这意味着该网页只能在相同域名的页面中被嵌入,不能跨域嵌入到其他域名的页面。这是一个安全措施,防止点击劫持攻击。
要解决这个问题,你有以下几种方法:
方法一:更改目标网页的设置
修改 X-Frame-Options 响应头:如果你有权修改目标网页的服务器配置,可以将 X-Frame-Options 从 SAMEORIGIN 改为 ALLOW-FROM uri,或者移除这个头。但需要注意的是,开放这个设置可能会带来安全风险。
使用 CSP(Content Security Policy)头:较新的做法是使用 Content-Security-Policy (CSP) 头来控制嵌入行为。
方法二:通过代理解决跨域问题
另一个办法是设置一个反向代理服务器,使请求看起来是同源的。具体而言,你可以在你的服务器上设置一个反向代理,将请求转发到目标服务器。
使用 Nginx 反向代理:
配置 Nginx 将请求转发到目标服务器
server {
listen 80;
server_name your-domain.com;
location /proxy-alias {
proxy_pass https://XXX.aliwork.com/;
proxy_set_header Host XXX.aliwork.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
使用其他反向代理:你也可以使用其他代理服务器,例如 Apache 或者一些专用的代理软件。
方法三:通过内容协商
与目标服务器管理员协商,看看是否可以在双方的内部网络内调整 X-Frame-Options 或使用其他更灵活的嵌入策略。
方法四:使用JSONP或者CORS(较高风险)
在特殊情况下,可以尝试使用JSONP或CORS方式,确保跨域资源请求合法。
请注意,在更改任何安全设置之前,务必评估潜在的安全风险,并采取相应的保护措施。这样能确保系统在开放部分功能时依旧能保持较高的安全性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。