在具有不同端口的本地主机上进行跨项目 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。有多种选择可以解决此问题:
如果您希望项目中的所有页面都放在 iframe 中,那么您可以从 MIDDLEWARE
设置中删除 'django.middleware.clickjacking.XFrameOptionsMiddleware'
:
中间件 = [
...
<s>'django.middleware.clickjacking.XFrameOptionsMiddleware',</s>
...
]
如果这仅适用于特定视图,您可以使用 xframe_options_exempt
装饰器:
from django.views.decorators.clickjacking import xframe_options_exempt
@xframe_options_exempt
def some_view(request):
...
我对 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。有多种选择可以解决此问题:
如果您希望项目中的所有页面都放在 iframe 中,那么您可以从
MIDDLEWARE
设置中删除'django.middleware.clickjacking.XFrameOptionsMiddleware'
:中间件 = [ ... <s>'django.middleware.clickjacking.XFrameOptionsMiddleware',</s> ... ]
如果这仅适用于特定视图,您可以使用
xframe_options_exempt
装饰器:from django.views.decorators.clickjacking import xframe_options_exempt @xframe_options_exempt def some_view(request): ...