Symptoms
It returns HTML representation of some internal data structure instead of actual things we added to the tag, and all the values we have not defined explicitly are in their default state. Additionally it tries to copy <param name="movie"... value to <param name="src"... and vice versa.
In some corner cases of operations with innerHTML, we could lose the value of "movie" parameter.
Impact
No video displayed.
Conditions
Display blank screen instead of video in Internet Explorer.
Workaround
iRule workaround:
when HTTP_REQUEST { set is_youtube 0 }
when REWRITE_REQUEST_DONE {
# workaround for IE/Flash ActiveX feature
set is_youtube 0
if {"[HTTP::host][HTTP::path]" matches_glob
"s.ytimg.com/yts/jsbin/www-embed-player*.js"
|| "[HTTP::host][HTTP::path]" matches_glob
"s.ytimg.com/yts/jsbin/*/www_common_mod.js" } {
set is_youtube 1
}
if { $is_youtube == 1 } {
if { [HTTP::version] eq "1.1" } {
if { [HTTP::header is_keepalive] } {
HTTP::header replace "Connection" "Keep-Alive"
}
HTTP::version "1.0"
}
}
}
when HTTP_RESPONSE {
if { $is_youtube == 1} {
if { [HTTP::header exists "Content-Length"] and [HTTP::header
"Content-Length"] <= 1048576 } {
HTTP::collect [HTTP::header Content-Length]
} else {
HTTP::collect 1048576
}
}
}
when HTTP_RESPONSE_DATA {
if { $is_youtube == 1 } {
set yt_loc [string first {;e.movie=} [HTTP::payload]]
if { $yt_loc >= 0 } {
HTTP::payload replace $yt_loc 1 {;e.src=}
set is_youtube 0
}
HTTP::release
}
}