Last Modified: Sep 13, 2023
Affected Product(s):
BIG-IP APM
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
The Microsoft webservice.htc component provides JavaScript interface for SOAP services for Microsoft Internet Explorer (IE). It stops working after rewriting through reverse proxy.
Microsoft WebService component stops working.
-- Using Microsoft webservice.htc component. -- Rewriting through reverse proxy. -- Running IE.
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 }
Microsoft WebService HTML component no longer stops working after rewriting.