在具有不同端口的本地主机上进行跨项目 iframe 测试

Cross-project iframe testing on localhost with different ports

我对 iFrame 比较陌生,我尝试做的是在 项目 B 中的 iframe 中加载 项目 A 。项目 A 运行 作为 localhost:8000 上的 Django 项目,项目 B 作为 localhost:8001 上的单独 Django 项目。在项目 B 中,我有一个包含以下内容的 Django 模板:

<iframe src="http://127.0.0.1:8000" height="500px" width="500px"></iframe>

问题是我没有看到项目 A 主页的内容,而是看到错误消息指出:

127.0.0.1 refused to connect

有什么我非常想念的吗?

这是 Django 启动时的默认设置 Clickjacking Protection [Django docs](对我们来说太棒了!),但这会阻止您在其他项目中加载 iframe。有多种选择可以解决此问题:

  1. 如果您希望项目中的所有页面都放在 iframe 中,那么您可以从 MIDDLEWARE 设置中删除 'django.middleware.clickjacking.XFrameOptionsMiddleware'

    中间件 = [
         ...
         <s>'django.middleware.clickjacking.XFrameOptionsMiddleware',</s>
         ...
     ]
    
  2. 如果这仅适用于特定视图,您可以使用 xframe_options_exempt 装饰器:

    from django.views.decorators.clickjacking import xframe_options_exempt
    
    @xframe_options_exempt
    def some_view(request):
        ...