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

如何禁用X-Frame-Options: deny响应头?Django部署后iframe嵌入失败求助

解决Django站点iframe嵌入被拒的问题

可能的原因及修复步骤

  • 装饰器应用位置错误:确保@xframe_options_exempt直接作用在目标视图上,类视图需配合method_decorator使用,示例代码:
    from django.views.decorators.clickjacking import xframe_options_exempt
    from django.utils.decorators import method_decorator
    from django.views import View
    
    @method_decorator(xframe_options_exempt, name='dispatch')
    class TargetEmbeddedView(View):
        def get(self, request):
            # 视图逻辑代码
    
  • 中间件顺序冲突:检查settings.py的中间件列表,XFrameOptionsMiddleware必须放在所有可能修改响应头的中间件之后,避免装饰器的修改被覆盖。
  • Heroku平台强制配置:Heroku的路由层或默认安全配置可能会强制添加X-Frame-Options: deny,可通过heroku config:set自定义响应头,或检查django-heroku包的自动配置是否覆盖了你的设置。
  • 协议不匹配:嵌入iframe时要使用HTTPS地址(你的站点是HTTPS),避免浏览器因混合内容阻止加载,同时导致头信息处理异常。
  • 缓存残留:Heroku路由层或浏览器可能缓存了旧的响应头,执行heroku restart重启应用实例,同时清除浏览器缓存后重试。
  • 视图路由错误:确认添加装饰器的视图,是你要嵌入的页面对应的目标视图,避免URL路由指向了未装饰的视图函数。

验证方法

用curl命令检查响应头,确认X-Frame-Options是否被正确修改或移除:

curl -I https://gkwhelps.herokuapp.com/你的目标页面路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:24:24