2008-09-26 22 views
3

当我尝试通过XMLHttpRequest发送HTTP GET请求时,它在非安全HTTP上工作。如何通过Firefox上的HTTPS使XMLHttpRequest工作?

但是,当通过HTTPS发送,不同的浏览器给了不同的结果:

在Firefox 3.0.2: - GET请求没有到达Web服务器。

在IE 7上: - GET请求到达Web服务器。

这是否与Firefox 3对不受信任的证书越来越严格有关? 有没有办法解决这个问题?

我已经将该URL作为Firefox的证书管理器中的例外添加。 错误控制台不报告任何错误。 我已经添加了一个围绕XMLHttpRequest的open()并发送的try-catch。没有例外被抛出。

使用绝对和相对URL路径都不起作用。

下面的代码片段:

var xmlHttp; 
    try 
    { 
     // Firefox, Opera 8.0+, Safari 
     xmlHttp=new XMLHttpRequest(); 
    } 
    catch (e) 
    { 
     // Internet Explorer 
     try 
     { 
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) 
     { 
      try 
      { 
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) 
      { 
       return false; 
      } 
     } 
    } 
    // we won't be handling any HTTP response 
    xmlHttp.onreadystatechange=function() 
    { 
     // do nothing.. 
    } 
    // send HTTP GET request 
    try 
    { 
     xmlHttp.open("GET", "/[relative path to request]", true); 
     xmlHttp.send(null); 
    } 
    catch (e) 
    { 
     alert('Error sending HTTP GET request!'); 
     return false; 
    } 

感谢, 肯尼斯

回答

0

以任何机会,你要求在HTTPS页面非HTTPS URL?是否有任何消息出现在错误日志/控制台中?

+0

我已经更新了这个问题。 – ksuralta 2008-09-26 06:23:51

1

试着将你的封开后:

// send HTTP GET request 
try 
{ 
    xmlHttp.open("GET", "/[relative path to request]", true); 
} 
catch (e) 
{ 
    alert('Error sending HTTP GET request!'); 
    return false; 
} 
// we won't be handling any HTTP response 
xmlHttp.onreadystatechange=function() 
{ 
    // do nothing.. 
} 

// Then send it. 
xmlHttp.send(null); 

一个小Googling发现确认: http://www.ghastlyfop.com/blog/2007/01/onreadystate-changes-in-firefox.html

虽然该文件说要重视后。发送(空)的功能,我已经 打开后总是附着。

相关问题