<iframe>跨域内嵌页面报错 Refused to display 'http://39.101.66.223:8080/' in a frame because it set 'X-Frame-Options' to 'sameorigin' 怎么解决
时间: 2024-10-11 11:06:49 浏览: 54
当遇到 `Refused to display` 的错误,通常是因为网页设置了 `X-Frame-Options` 标头,限制了该页面在一个不同源 (`http://39.101.66.223:8080/`) 的 iframe 中显示。这是出于安全原因,防止点击劫持 (Clickjacking)。
要解决这个问题,你可以从以下几个方面尝试:
1. **修改服务器设置**:如果控制着目标页面的服务器,可以将 `X-Frame-Options` 设置更改为 `'allow-from'` 或者 `'none'`,但这需要确保这样做不会引入不必要的风险。对于 `'allow-from'`,你需要指定允许的特定域名或URL。
```bash
X-Frame-Options: allow-from http://yourdomain.com
```
2. **使用 CORS**:通过配置响应标头,开启跨源资源共享(CORS),允许来自特定源的请求访问资源。这需要目标网站提供适当的 `Access-Control-Allow-Origin` 字段。
3. **如果必要,使用 JSONP**:如果内容是动态加载的 JavaScript,可以考虑使用 JSONP 来绕过同源策略,因为 JSONP 不受 `X-Frame-Options` 控制。
4. **如果iframe嵌入的是第三方服务**:如果无法直接修改对方服务器设置,可以在嵌入的代码中尝试处理这种跨域问题,例如使用 `document.domain` 修改浏览器认为的源。
5. **本地开发环境**:如果是开发者调试,有时会用到 CORS 策略模拟插件(如 Chrome 的 Allow-Control-Allow-Origin 插件),但在生产环境中应避免依赖这种方式。
阅读全文