Linux Ajax(mootools Request.JSON)标头错误

时间:2010-04-22 13:57:13

标签: javascript ajax http mootools

我使用以下代码获取一些json数据:

var request = new Request.JSON(
    {
        'url':        sourceURI,
        'onSuccess':  onPageData
    }
);
request.get();

Request.JSON是来自Mootools(一个javascript库)的类。

但是在linux(ubuntu on firefox 3.5和Chrome)上,请求总是失败。所以我试图显示ajax正在发送的http请求。 (我用netcat来显示它)

请求是这样的:

OPTIONS /the+url HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.226.0 Safari/532.3
Referer: http://example.com/ref...
Access-Control-Request-Method: GET
Origin: http://example.com
Access-Control-Request-Headers: X-Request, X-Requested-With, Accept
Accept: */*
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP请求(第一行)不是它应该如何:

OPTIONS /the+url HTTP/1.1

应该是:

GET /the+url HTTP/1.1

有人知道为什么会出现这个问题以及如何解决这个问题吗?

编辑:

ajax请求从我的Apache服务器获得以下结果:

HTTP/1.1 200 OK
Date: Fri, 23 Apr 2010 08:09:41 GMT
Server: Apache/2.2.15 (Debian)
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 0
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/plain

内容长度不应为零。但我认为,Request.JSON模块现在可以看到GET请求可用并且可以使用它吗?

2 个答案:

答案 0 :(得分:2)

这可能与W3C Cross-Origin Resource Sharing规范有关。

答案 1 :(得分:0)

我不知道为什么请求标头会改变,但Request类提供了更多发送请求的功能。尝试send()而不是get();

var req = neq Request.JSON({...});
req.send({
    'method': 'get'
});

或立即将其绑定到请求;

var req = new Request.JSON({
    method: 'get',
    ...
}).send();