60
votes

I'm using the youtube iframe api and get the following console error relating to the blocking of a frame with origin http://www.youtube.com. Was wondering if anyone can explain why this error is only appearing in the chrome console and if there are any ways to prevent this happening?

Error:

Blocked a frame with origin "http://www.youtube.com" from accessing a frame with origin "http://youtubetest.appspot.com". Protocols, domains, and ports must match.

2
Are you running the page in https? What does the html code look like for the include?epascarello
@styler I went through your answer link, but didn't understand how you solved it ? Can you please let me know here.coding_idiot
@styler After reading through that comment thread you linked, I gather the answer is, we're at the mercy of the Chrome team's laziness/stubbornness and cannot get rid of the error? Or did I miss something?relic
Are you blocking third-party cookies? Blocking them can also cause this error.wpoely86

2 Answers

10
votes

I had a similar error where the JS error was:

Blocked a frame with origin "https://www.youtube.com" from accessing a frame with origin "http://www.yourdomain.com". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocol/Protocols must match, YouTube has CORS (Cross Origin Resource Sharing) enabled to allow across domains.

Try getting rid of the https:// in your YouTube iframe tag?

You could also take a look at your closing iframe tags. Iframe tags are not singleton tags and must end with a </iframe> and not a />.

6
votes

It seems that today, using the protocol-free "//youtube.com" URL that YouTube puts IN THEIR OWN EMBED CODE SNIPPET TOOL is throwing protocol matching errors. (sigh) This worked fine earlier this week.

If I add the https: to the embed URL it stops throwing errors and the iframe JS API works. It will continue to throw your "Blocked a frame with origin ..." error, but the JS API will function as expected.