Bug ID 528994: Check for native functions does not work for IE10+ in compatibility mode

Last Modified: Nov 07, 2022

Bug Tracker

Affected Product:  See more info
BIG-IP APM(all modules)

Known Affected Versions:
11.3.0, 11.6.0, 11.6.0 HF1, 11.6.0 HF2, 11.6.0 HF3, 11.6.0 HF4, 11.6.0 HF5, 11.6.0 HF6, 11.6.0 HF7, 11.6.0 HF8, 11.6.1, 11.6.1 HF1, 11.6.1 HF2, 11.6.2, 11.6.2 HF1, 11.6.3, 11.6.3.1, 11.6.3.2, 11.6.3.3, 11.6.3.4, 11.6.4, 11.6.5, 11.6.5.1, 11.6.5.2, 11.6.5.3, 12.0.0, 12.0.0 HF1, 12.0.0 HF2, 12.0.0 HF3, 12.0.0 HF4

Fixed In:
12.1.0

Opened: Jun 20, 2015
Severity: 3-Major

Symptoms

There is a known issue of IE10+ where it could randomly replace all function definitions in dynamic window. Our internal function F5_isNative tries to compare functions with the copy we saved at window initialization, and this stops working when browser replaces old functions with new ones. In Bug473579 this test was fixed for IE10 and IE11 in Edge mode. But now it seems that the problem is also reproducible in all compatibility modes up to X-UA-Compatible=IE8.

Impact

Attached file cannot be loaded while under portal access provided rewritten content

Conditions

Checking with native functions can fail in compatibility mode for IE10+.

Workaround

--- when HTTP_REQUEST { # ID478654 - [Portal Access] Support rewriting of parameters for saved copies of 'interesting' functions # F5's form submit handler is not working for UCF_Form because the underlying form # don't have original 'submit' method. # Force rewriting of form action with reassignment of its value. if { [HTTP::path] ends_with "classes/Form.js" } { # log local0. "Patching script for ID478654: [HTTP::path]" set bug478654 1 if { [HTTP::version] eq "1.1" } { if { [HTTP::header is_keepalive] } { HTTP::header replace "Connection" "Keep-Alive" } HTTP::version "1.0" } } elseif { [info exists bug478654] } { unset bug478654 } } when HTTP_RESPONSE { if { [info exists bug478654] } { if { [HTTP::header exists "Content-Length"] and \ [HTTP::header "Content-Length"] > 0 and \ [HTTP::header "Content-Length"] <= 1048576 } { HTTP::collect [HTTP::header Content-Length] } else { HTTP::collect 1048576 } } } when HTTP_RESPONSE_DATA { if { [info exists bug478654] } { unset bug478654 set location [string first {this.oDomRef['_SAP_UCF_oldHandlerSubmit_']} \ [HTTP::payload]] if { $location > 0 && \ $location < [expr {[HTTP::payload length] - 42}] } { HTTP::payload replace $location 0 {this.oDomRef.action=this.oDomRef.action;} } unset location } } ---

Fix Information

Now simplified check for native functions is used for Internet Explorer to avoid problems with context replacing in Internet Explorer 10+ even in compatibility mode.

Behavior Change