[JIRA] Commented: (EDS-35) EDS fails if native XMLHttp will be disabled in IE
Rod Widdowson (JIRA)
noreply at shibboleth.net
Wed Mar 14 12:01:16 GMT 2012
[ https://issues.shibboleth.net/jira/browse/EDS-35?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13929#comment-13929 ]
Rod Widdowson commented on EDS-35:
----------------------------------
I have attached a fixed version of the minified version of idpselect.js to https://issues.shibboleth.net/jira/browse/EDS-24.
If anybody would like to double check that it fixes their problem I would be grateful to hear this.
> EDS fails if native XMLHttp will be disabled in IE
> ---------------------------------------------------
>
> Key: EDS-35
> URL: https://issues.shibboleth.net/jira/browse/EDS-35
> Project: Embedded Discovery Service
> Issue Type: Bug
> Affects Versions: 1.0.1
> Environment: Internet Explorer with "Enable native XMLHTTP support" disabled.
> Reporter: dantech at idp.protectnetwork.org
> Assignee: Rod Widdowson
> Attachments: idpselect.js.patch
>
> Time Spent: 15 minutes
> Remaining Estimate: 0 minutes
>
> If "Enable native XMLHTTP support" is disabled in IE, then users won't be able to use the EDS, but instead will be presented with the error message "FATAL - DISCO UI:Browser does not support XMLHttpRequest, unable to load IdP selection data" or "Browser does not support XMLHttpRequest, unable to load IdP selection data"
> Microsoft recommends a solution to the problem in the following link:
> http://msdn.microsoft.com/en-us/library/ie/ms537505(v=vs.85).aspx
> If native XMLHTTP has been disabled, developers can override the XMLHttpRequest property of the window object with the MSXML-XMLHTTP control, unless ActiveX has also been disabled, as in the following example.
> if (!window.XMLHttpRequest) {
> window.XMLHttpRequest = function() {
> try {
> return new ActiveXObject('MSXML2.XMLHTTP.3.0');
> }
> catch (ex) {
> return null;
> }
> }
> }
> The Embedded Discovery Service code that is causing the issue can be found in the idpselect.js.
> Here is the function where the problem occurs...
> /**
> Loads the data used by the IdP selection UI. Data is loaded
> from a JSON document fetched from the given url.
>
> @param {Function} failureCallback A function called if the JSON
> document can not be loaded from the source. This function will
> passed the {@link XMLHttpRequest} used to request the JSON data.
> */
> var load = function(dataSource){
> var xhr = null;
> try {
> xhr = new XMLHttpRequest(); <--- Exception is thrown here.
> } catch (e) {}
> if (null == xhr) {
> fatal(getLocalizedMessage('fatal.noXMLHttpRequest'));
> return false;
> }
> if (isIE()) {
> //
> // cache bust (for IE)
> //
> dataSource += '?random=' + (Math.random()*1000000);
> }
> //
> // Grab the data
> //
> xhr.open('GET', dataSource, false);
> if (typeof xhr.overrideMimeType == 'function') {
> xhr.overrideMimeType('application/json');
> }
> xhr.send(null);
>
> if(xhr.status == 200){
> //
> // 200 means we got it OK from as web source
> // if locally loading its 0. Go figure
> //
> var jsonData = xhr.responseText;
> if(jsonData === null){
> fatal(getLocalizedMessage('fatal.noData'));
> return false;
> }
> //
> // Parse it
> //
> idpData = JSON.parse(jsonData);
> }else{
> fatal(getLocalizedMessage('fatal.loadFailed') + dataSource);
> return false;
> }
> return true;
> };
> I've attached a patch that we are using to get around the problem.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the commits
mailing list