Bug ID 503842: Microsoft WebService HTML component does not work after rewriting

Last Modified: Sep 13, 2023

Affected Product(s):
BIG-IP APM(all modules)

Known Affected Versions:
11.4.1, 11.5.0, 11.5.1, 11.5.2, 11.5.3, 11.5.4, 11.5.5, 11.5.6, 11.5.7, 11.5.8, 11.5.9, 11.5.10, 11.6.0, 11.6.1, 11.6.2, 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.1.0 HF1, 12.0.0 HF2, 12.1.0 HF2, 12.0.0 HF3, 12.0.0 HF4, 12.1.1 HF1, 12.1.1 HF2

Fixed In:
13.0.0, 12.1.2 HF1

Opened: Jan 30, 2015

Severity: 3-Major

Symptoms

The Microsoft webservice.htc component provides JavaScript interface for SOAP services for Microsoft Internet Explorer (IE). It stops working after rewriting through reverse proxy.

Impact

Microsoft WebService component stops working.

Conditions

-- Using Microsoft webservice.htc component. -- Rewriting through reverse proxy. -- Running IE.

Workaround

You can use the following iRule to work around this issue: --- when HTTP_REQUEST { # Downgrade IE compatibility mode set downgrade_ie_compat 0 if { [HTTP::path] contains "PreviewQualitySheet.aspx" } { set UAString [string tolower [HTTP::header User-Agent]] if { ! ($UAString contains "msie 8.") and ! ($UAString contains "msie 7.")} { set downgrade_ie_compat 8 } } # do not rewrite WebService HTML Component # because IE ignores it after rewriting. # patching a few things manually instead set ms_webservice_fix 0 if { [HTTP::uri] ends_with "webservice.htc"} { set ms_webservice_fix 1 HTTP::uri "[HTTP::uri]?F5CH=I" 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 { $downgrade_ie_compat > 0 && ! [HTTP::header exists X-UA-Compatible] } { HTTP::header replace "X-UA-Compatible" "IE=$downgrade_ie_compat" } if { $ms_webservice_fix == 1 } { 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 { $ms_webservice_fix == 1 } { set location [string first \ {if (co.userName == null)} \ [HTTP::payload]] if { $location > 0 } { HTTP::payload replace $location 0 {loc=F5_WrapURL(loc);} } } HTTP::release }

Fix Information

Microsoft WebService HTML component no longer stops working after rewriting.

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips