11

我正在尝试在嵌入标签中嵌入视频但我收到此错误:

Refused to display 'http://vimeo.com/27577981' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

对于 youtube 链接:http ://www.youtube.com/watch ?v=zBEYR69o2Ao 当我用 embed/ 替换 watch?v= 时,它运行良好。但视频不一定是 youtube 的。所以我想要一个独特的解决方案。

4

4 回答 4

26

我有类似的问题
解决方案:
简而言之(目前)嵌入网址是:

//player.vimeo.com/video/

代替:

//vimeo.com/27577981

例如:

<iframe src="//player.vimeo.com/video/27577981?portrait=0" class="ivid" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>

但正如昆汀所说,检查 vimeo 文档:http: //developer.vimeo.com/player/embedding

于 2014-11-20T12:34:52.803 回答
20

正如错误消息所说,您不能将该页面嵌入框架中。Vimeo提供有关如何嵌入播放器的文档。跟着那个。

<html>
<head>
  <title>{page_title}</title>
</head>
<body>
  <iframe src="https://player.vimeo.com/video/{video_id}" width="{video_width}" height="{video_height}" frameborder="0" title="{video_title}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</body>
</html>
于 2013-07-12T11:24:54.910 回答
0

这是因为 iframe 中的网站将 X-Frame-Options 标头设置为:SAMEORIGIN

完成这项工作的唯一方法是让网站要么不设置标题,要么将值更改为 ALLOW-FROM your-uri

这就是为什么您需要遵循 Vimeo 说明才能使其正常工作的原因,但显然每个站点都必须独立处理。

此策略是避免点击劫持的安全措施。您可以在此处查看更多信息:https ://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options

于 2014-05-09T02:46:51.920 回答
0

基于 @Picard https://stackoverflow.com/a/27039766/12839228和 @basarat https://stackoverflow.com/a/51976196/12839228的 Ruby 字符串操作以获取功能链接 (2020.09.01) :

优酷示例:

raw_video_link = 'https://www.youtube.com/watch?v=5qap5aO4i9A&ab_channel=ChilledCow'
video_link = 'https://www.youtube.com/embed/' + raw_video_link.split('=')[1].split('&')[0]

Vimeo 示例:

raw_video_link = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'.split('/')
  insert_player_link = raw_video_link[2].split('.').unshift('player').join('.')
  raw_video_link.delete_at(2)
  raw_video_link.insert(2, insert_player_link)
  raw_video_link.insert(3, 'video')
  video_link = raw_video_link.join('/')

随意重构!

于 2020-09-01T10:08:40.133 回答