3

当我尝试通过 XMLHttpRequest 发送 HTTP GET 请求时,它适用于非安全 HTTP。

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

在 Firefox 3.0.2 上: - GET 请求未到达 Web 服务器。

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

这是否与 Firefox 3 对不受信任的证书变得更加严格有关?有没有解决的办法?

我已经在 Firefox 的证书管理器中添加了 URL 作为例外。错误控制台不报告任何错误。我在 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;
    }

谢谢,肯尼斯

4

2 回答 2

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);

谷歌搜索发现确认: http ://www.ghastlyfop.com/blog/2007/01/onreadystate-changes-in-firefox.html

尽管该文档说要在 .send(null) 之后附加该函数,但我总是在打开之后附加该函数。

于 2008-10-02T11:54:23.830 回答
0

无论如何,您是否在 HTTPS 页面中请求非 HTTPS URL?错误日志/控制台中是否出现任何消​​息?

于 2008-09-26T06:13:19.220 回答