This post should be called instead «Making Opera work around a Cisco Secure ACS 4.1 interoperability bug».
Continuing with the stream of web browser interoperability issues I recently found how to make Opera 10 work with a Cisco Secure Access Control Server 4.1.
The problem I experienced is briefly described as, clicking any option in the menu (in the left frame) will open the menu again in the right frame, instead of actually showing the selected option.
The answer is simple: set Opera to identify as Firefox for that domain or IP. This is located under Tools » Preferences » Advanced » Content » Manage Site Preferences. Add the site and under Network, change «Browser identification» to «Identify as Firefox».
Here are the screenshots. Click on them.
The analysis narrows down to this code in the menu:
// unfortunately the Object model in IE doesn't match the Netscape one so we have to check the browser... if( "Netscape" == navigator.appName ) { obj.href=sequence_url; } else { ua=navigator.userAgent; v=navigator.appVersion.substring(0,1); if ((ua.lastIndexOf("MSIE")!=-1) && (v!='1') && (v!='2') && (v!='3')) { // MSIE 4.0 and later. obj.href=sequence_url; } else { parent.parent.R.location=sequence_url; } } (some code snipped) <A HREF="" TARGET=R onClick="getURL( this , 'setup.exe?action=make_r_fs&option=users' )" > <IMG SRC="images/cisco_buttons/user-up.gif" BORDER=1 ALT="User Setup"></A>
So Cisco is actually trying to detect the UA, but instead of assuming a standards-complaint browser and applying special fixes for IE, it assumes IE and applies a special fix for Mozilla (Netscape).
That’s why changing the identifier for that site actually works. Now the JavaScript code correctly detects the UA and performs the correct action of loading the page in the «R» frame.