XMLHttpRequest在Firefox 3.6.10中返回状态0,从交叉原始请求返回

时间:2010-10-07 11:56:15

标签: firebug xmlhttprequest cors

我正在开发一个应用程序,它对使用Netty编写的HTTP服务器发出跨源AJAX请求。

正在执行的Javascript代码类型的示例如下。

        $.ajax({
            type:"GET",
            url:"http://localhost:5000/someresource",
            data: { id1: "1", id2: "2" },
            success: function(status, textStatus, xhr) {
                alert("Success")
            },
            error: function(status, textStatus, xhr) {
                alert("Error")
            }
        });

我看到的问题是,在Firefox(3.6.10和4.0 beta)上,无论响应的状态如何,XMLHttpRequest的状态始终为0。在firebug中,我可以看到服务器返回了请求的正确状态,但是没有将其推送到XMLHttpRequest对象。

以下是发送的请求和响应标头

Response Headers
Content-Type text/plain; charset=utf-8
Content-Length 0
Access-Control-Allow-Orig... http://localhost:9000
Cache-Control no-cache
Connection Keep-Alive
Date Thu, 07 Oct 2010 07:52:08 GMT

Request Headers
Host localhost:5000
User-Agent Mozilla/5.0.... 
Accept */*
Accept-Language en-gb,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Content-Type application/x-www-form-urlencoded
Referer http://localhost:9000/test
Origin http://localhost:9000

我尝试在Chrome,Opera和Safari中执行代码,但它们都运行良好。这是我正在做的事情还是Firefox中的错误?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我在firefox 3.6+和chrome中都看到了这个问题。我发现的原因是我在localhost服务器上调试该站点。这两个只会在从远程URL运行时返回相应的响应代码。它们都返回localhost的不同状态代码。