3

XMLHttpRequest を介して HTTP GET 要求を送信しようとすると、安全でない HTTP で動作します。

しかし、HTTPS 経由で送信すると、ブラウザーが異なれば結果も異なります。

Firefox 3.0.2 の場合: - GET 要求が Web サーバーに到達しません。

IE 7 の場合: - GET 要求が Web サーバーに到達しました。

これは、Firefox 3 が信頼されていない証明書に対してより厳格になったことと関係がありますか? これを回避する方法はありますか?

Firefox の Certificate Manager で例外として URL を既に追加しました。エラー コンソールはエラーを報告しません。XMLHttpRequest の open() と send の周りに try-catch を追加しました。例外はスローされません。

絶対 URL パスと相対 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) の後に関数を添付するように書かれていますが、私は常に open の後に添付しています。

于 2008-10-02T11:54:23.830 に答える
0

ひょっとして、HTTPS ページで HTTPS 以外の URL をリクエストしていませんか? エラーログ/コンソールにメッセージが表示されますか?

于 2008-09-26T06:13:19.220 に答える