XMLHttpRequest 在 Firefox 3.6.10 及更高版本中从跨源请求返回状态 0

发布于 2024-09-26 23:17:32 字数 1125 浏览 8 评论 0原文

我正在开发一个应用程序,该应用程序向使用 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 对象。

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

响应标头
内容类型文本/纯文本;字符集=utf-8
内容长度0
访问控制允许原始... http://localhost:9000
缓存控制无缓存
连接保持活动状态
日期 2010 年 10 月 7 日,星期四 07:52:08 GMT

请求标头
主机本地主机:5000
用户代理 Mozilla/5.0... 
接受 */*
接受语言 en-gb,en;q=0.5
接受编码 gzip,deflate
接受字符集 ISO-8859-1,utf-8;q=0.7,*;q=0.7
保持活力 115
连接保持活动状态
内容类型应用程序/x-www-form-urlencoded
引用 http://localhost:9000/test
来源 http://localhost:9000

我尝试在 Chrome、Opera 和 Safari 中执行代码,它们都工作正常。这是我正在做的事情还是 Firefox 中的错误?

提前致谢。

I am developing an application that makes a cross origin AJAX request to an HTTP server written using Netty.

An example of the type of Javascript code being executed is below.

        $.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")
            }
        });

The problem I am seeing is that on Firefox (3.6.10 and 4.0 beta) the status of the XMLHttpRequest is always 0, regardless of the status of the response. In firebug I can see that the server is returning the correct status for the request, but this is not being pushed through to the XMLHttpRequest object.

Below is the request and response headers being sent

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

I have tried executing the code in Chrome, Opera and Safari and they all work fine. Is this something I am doing or a bug in Firefox?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

婴鹅 2024-10-03 23:17:32

我在 Firefox 3.6+ 和 chrome 中都看到过这个问题。我发现的原因是我正在本地主机服务器上调试该站点。当从远程 URL 运行时,这两者只会返回适当的响应代码。它们都为本地主机返回不同的状态代码。

I have seen this problem in both firefox 3.6+ and chrome. The reason i found is that i was debugging the site on the localhost server. Both of these will only return the appropriate response codes when it is ran from a remote url. They both return different status codes for localhost.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文