Django拒绝在iframe中显示YouTube视频,因为它设置了X-Frame-Options'到#SAMEORIGIN'

时间:2016-03-25 11:07:52

标签: angularjs django django-views django-angular

我的HTML页面如下所示:

 <div>
    <iframe margin="0" padding="0" border="none" width="420" height="345" frameBorder="0"
      ng-src="{{exercise_video_url}}">
    </iframe>  
  </div>

&#39; exercise_video_url&#39;我在控制器中设置如下:

$http.get("https://localhost:8000/api/exercises/initial/").then(function(response){

  $scope.initial_data=response.data;

  angular.forEach($scope.initial_data, function(item){

               $scope.exercise_type=item.exercise_type;
               $scope.exercise_description=item.description;
               $scope.exercise_video_url=$sce.trustAsResourceUrl(item.video_url);
})

我从我的Django视图中获取特定的运动相关信息,运动模型将video_url作为属性。我在某处读到并在我的角度控制器中注入了$ sce服务。

视频链接本身就像&#39; https://youtu.be/ ******&#39; - &GT; *是几个随机字符。如果您在浏览器中点击此链接或直接作为ng-src的来源,此链接可以独立运行。

我还尝试评论&#39; django.middleware.clickjacking.XFrameOptionsMiddleware &#39;在我的settings.py

1 个答案:

答案 0 :(得分:0)

您正在使用的YouTube网址,必须为嵌入版本。我只是在网站上修复了类似的问题并开始工作。

由于您将其嵌入到iframe中,因此只能使用YouTube嵌入网址。

因此示例请勿将短网址嵌入到iframe中,而应使用嵌入网址。

错误: <iframe width="1260" height="709" src="<iframe width="1260" height="709" src="https://www.youtube.com/watch?v=xWRNBOXoLf8" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

右: <iframe width="1260" height="709" src="<iframe width="1260" height="709" src="https://www.youtube.com/embed/xWRNBOXoLf8?ecver=1" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

使用https://www.youtube.com/embed/xWRNBOXoLf8?ecver=1