You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Django模板页面嵌入iframe并解决ERR_BLOCKED_BY_RESPONSE报错

问题解决指南

核心原因

你遇到的ERR_BLOCKED_BY_RESPONSE错误是Django默认的安全策略导致的:Django默认给所有响应添加X-Frame-Options: DENY响应头,禁止页面被嵌入任何iframe中。你能看到rejestracja.html的完整源码,说明请求本身已经成功返回,只是浏览器识别到该响应头后主动阻止了页面渲染,和你的路由、模板代码没有关联。

排查与解决步骤

  • 第一步先验证响应头:打开浏览器开发者工具的「网络」面板,刷新页面后找到rejestracja/对应的请求,查看响应头中是否存在X-Frame-Options: DENY字段,确认是该配置导致的拦截
  • 同域名嵌入解决方案:如果iframe的父页面和rejestracja/路由属于同一个域名,直接在Django项目的settings.py中添加配置:
    X_FRAME_OPTIONS = 'SAMEORIGIN'
    
    该配置会允许同域名下的页面嵌入iframe,不影响跨域拦截的安全性
  • 跨域名嵌入解决方案:如果父页面和iframe域名不一致,需要给指定视图解除iframe限制,不需要修改全局配置:
    1. 在视图文件头部导入装饰器:from django.views.decorators.clickjacking import xframe_options_exempt
    2. 给rejestracja视图添加装饰器:
      @xframe_options_exempt
      def rejestracja(request):
          # 原有视图逻辑
      
    该方案只会放开当前视图的iframe限制,不会影响其他页面的安全策略
  • 额外排查项:如果你的项目部署时使用了Nginx、Apache等反向代理服务,需要检查代理配置中是否强制添加了X-Frame-Options响应头,代理层的头配置优先级高于Django本身的配置,如有需要同步修改
  • 特殊情况排查:如果你配置了CSP(内容安全策略),需要检查frame-ancestors指令是否允许了父页面的域名,CSP的iframe限制优先级高于X-Frame-Options,如有需要对应调整CSP规则

内容的提问来源于stack exchange,提问作者Andrzej Krynski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:39:00