Embed YouTube video - Refused to display in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN' [duplicate]
Asked Answered
Y

5

259

I am trying to feed my Django page with some resource I am getting from somewhere else.

Inside the feed, I have YouTube videos with URL like: https://www.youtube.com/watch?v=A6XUVjK9W4o

Once I added this into my page, the video does not show up, saying:

Refused to display 'https://www.youtube.com/watch?v=A6XUVjK9W4o' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

Then I said, well, what if I change watch to embed. Then YouTube player shows up, but no video, saying:

Enter code here

How can I get this to work?

I am showing it in HTML like this:

<iframe width="420" height="315"
    src="{{vid.yt_url}}">
</iframe>

I googled almost for an hour, but no sign of success. I tried to append &output=embed - nada...

Yanina answered 4/9, 2014 at 8:54 Comment(1)
Here is how Youtube video API works: developers.google.com/youtube/player_parametersCreativity
T
605

You must ensure the URL contains embed rather watch as the /embed endpoint allows outside requests, whereas the /watch endpoint does not.

<iframe width="420" height="315" src="https://www.youtube.com/embed/A6XUVjK9W4o" frameborder="0" allowfullscreen></iframe>
Teenager answered 4/9, 2014 at 9:3 Comment(4)
For anyone that is wondering, the reason this works is because the /embed endpoint allows outside requests, whereas the /watch endpoint does not.Janka
Should really add a WHY in the answer instead of just the piece of code...Niobium
@NyiMaLayWinLaeAye But what if my video src is dynamic? I am stuck to this pointHanschen
I tried using the "youtu.be" link that I copied from the address bar of the video I wanted to embed -- yes, I changed watch to embed -- but it didn't like that. I changed to youtube.com + the path and it worked.Hautevienne
L
94

The YouTube URL in src must have and use the embed endpoint instead of watch, so for instance let’s say you want to embed this YouTube video: https://www.youtube.com/watch?v=P6N9782MzFQ (browser's URL).

You should use the embed endpoint, so the URL now should be something like https://www.youtube.com/embed/P6N9782MzFQ. Use this value as the URL in the src attribute inside the iframe tag in your HTML code, for example:

<iframe width="853" height="480" src="https://www.youtube.com/embed/P6N9782MzFQ" frameborder="0" allowfullscreen ng-show="showvideo"></iframe>

So just replace https://www.youtube.com/watch?v= with https://www.youtube.com/embed/ and of course check for your video's ID. In this sample, my video ID is P6N9782MzFQ.

Levileviable answered 5/2, 2017 at 3:27 Comment(1)
Just replace "watch?v=" with "embed/"Platas
D
28

You only need to copy <iframe> from the YouTube Embed section (click on SHARE below the video and then EMBED and copy the entire iframe).

Decalogue answered 15/11, 2015 at 21:21 Comment(2)
This solution was much more clearKoffler
Thanks. A simple answer is a better answerWilmoth
A
5

If embed no longer works for you, try with /v instead:

<iframe width="420" height="315" src="https://www.youtube.com/v/A6XUVjK9W4o" frameborder="0" allowfullscreen></iframe>
Awhirl answered 13/6, 2016 at 1:34 Comment(0)
H
2

Along with the embed, I also had to install the Google Cast extension in my browser.

<iframe width="1280" height="720" src="https://www.youtube.com/embed/4u856utdR94" frameborder="0" allowfullscreen></iframe>
Houseroom answered 7/5, 2016 at 16:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.