我正在用 Django 编写一个应用程序,让用户能够从我的网站嵌入视频。我正在为用户提供 iFrame 代码以嵌入视频。我发现这是不允许的。尝试这样做时,控制台会显示以下错误:
X-Frame-Options 拒绝加载:http: //blah.com/embed/110/不允许跨域框架。
经过大量研究,我发现了发生了什么。我的问题是:有人知道像 Youtube 和 Vimeo 这样的服务是如何解决这个问题的吗?
我正在用 Django 编写一个应用程序,让用户能够从我的网站嵌入视频。我正在为用户提供 iFrame 代码以嵌入视频。我发现这是不允许的。尝试这样做时,控制台会显示以下错误:
X-Frame-Options 拒绝加载:http: //blah.com/embed/110/不允许跨域框架。
经过大量研究,我发现了发生了什么。我的问题是:有人知道像 Youtube 和 Vimeo 这样的服务是如何解决这个问题的吗?
有一个特殊的标头允许或禁止在 i-frame 中显示页面 -X-Frame-Options
它用于防止称为clickjacking的攻击。您可以查看有关它的 Django 文档https://docs.djangoproject.com/en/dev/ref/clickjacking/
希望其内容显示在 i-frame 中的站点只是不设置此标头。
我认为在您安装 Django 时,默认情况下会启用此保护。如果您不允许将您的内容嵌入 i-frames,您可以在整个站点的设置中禁用点击劫持保护,或者使用带有django.views.decorators.clickjacking
装饰器的按视图控制:
xframe_options_exempt
xframe_options_deny
xframe_options_sameorigin
按视图控制是更好的选择。