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

同一IIS服务器下ASP.Net站点嵌入使用httpPlatformHandler的Python站点时X-Frame-Options跨域问题解决咨询

同一IIS服务器下ASP.Net站点嵌入使用httpPlatformHandler的Python站点时X-Frame-Options跨域问题解决咨询

兄弟,我太懂你这种明明两个站点同属一个域名,结果嵌个iframe就被拦截的憋屈了!先给你把核心问题掰明白:你误以为是httpPlatformHandler的动态端口导致了跨源,但其实浏览器根本看不到那个IIS和Python后端之间的内部端口——因为你的Python站点是通过IIS的/News路径做反向代理转发的,浏览器全程只和IIS的443(HTTPS)端口交互,看到的域名都是https://www.example.com,所以真正拦你的是Python站点返回的X-Frame-Options: Deny响应头,和跨源完全没关系!

下面给你两个精准的解决方向,不用开放所有站点:

一、修改Django(Python)站点的响应头配置,只允许同域名嵌入

现代浏览器推荐用Content-Security-Policy的frame-ancestors规则来控制iframe嵌入,比旧的X-Frame-Options更灵活:

  1. 打开Django项目的settings.py文件
  2. 先关掉默认的框架拦截,再配置CSP规则:
    # 关闭Django默认的X-Frame-Options: Deny设置
    SECURE_FRAME_DENY = False
    # 配置只允许同域名的页面嵌入当前站点
    CONTENT_SECURITY_POLICY = {
        "frame-ancestors": ["'self'"]
    }
    
    如果你想更精确(和效果一致),也可以把'self'换成你的域名"https://www.example.com"

如果你习惯用X-Frame-Options,也可以通过自定义中间件设置为SAMEORIGIN(只允许同域名嵌入):

  1. 在Django项目里新建一个中间件文件(比如middleware.py),写入:
    def add_frame_options(get_response):
        def middleware(request):
            response = get_response(request)
            # 替换掉默认的Deny,只允许同域名嵌入
            response.headers['X-Frame-Options'] = 'SAMEORIGIN'
            return response
        return middleware
    
  2. 然后在settings.py的MIDDLEWARE列表里注册这个中间件:
    MIDDLEWARE = [
        # 其他中间件...
        '你的项目名.middleware.add_frame_options',
    ]
    

二、检查IIS是否给Python站点路径额外加了严格的响应头

有时候IIS的HTTP响应头模块会给特定路径(比如/News)单独设置X-Frame-Options: Deny,你可以检查一下:

  • 打开IIS管理器,找到默认网站下的News应用程序
  • 双击「HTTP响应头」功能
  • 查看有没有X-Frame-Options的配置项,如果有且值是Deny,要么改成SAMEORIGIN,要么直接删除这个配置(让Django自己控制响应头)

最后验证步骤

改完之后,用浏览器F12打开开发者工具:

  1. 直接访问https://www.example.com/News,切换到「网络」标签,查看该请求的响应头,确认:
    • 要么有Content-Security-Policy: frame-ancestors 'self'
    • 要么X-Frame-Options的值是SAMEORIGIN
  2. 再刷新ASP.NET的frontpage页面,iframe里的News页面应该就能正常显示了

备注:内容来源于stack exchange,提问作者Bob D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:04:33