我感觉完全愚蠢,因为我花了两个小时来解决任务,这应该是非常简单的,而且之前我解决了很多次。但现在我甚至不确定在哪个方向挖掘。
我无法使用本地服务器(Apache和Mongrel)中的ajax获取静态内容。我得到响应200和206(取决于服务器),空响应文本(虽然Content-Length标题总是正确的),firebug显示红色请求。
Javascript非常通用,即使在这里我也得到了相同的结果:http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first (只需将文档位置更改为“http://localhost:3000/whatever”) 所以,这可能不是原因。
好吧,现在我没有想法了。如果它有帮助,我也可以发布http标题。
谢谢!
Response Headers
Connection close
Date Sat, 01 May 2010 21:05:23 GMT
Last-Modified Sun, 18 Apr 2010 19:33:26 GMT
Content-Type text/html
Content-Length 7466
Request Headers
Host localhost:3000
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,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
Referer http://www.w3schools.com/ajax/tryit_view.asp
Origin http://www.w3schools.com
Response Headers
Date Sat, 01 May 2010 21:54:59 GMT
Server Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 mod_jk/1.2.28
Etag "3d5cbdb-fb4-4819c460d4a40"
Accept-Ranges bytes
Content-Length 4020
Cache-Control max-age=7200, public, proxy-revalidate
Expires Sat, 01 May 2010 23:54:59 GMT
Content-Range bytes 0-4019/4020
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type application/javascript
Request Headers
Host localhost
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,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
Origin null
已更新:
我发现了一个问题,那是关于跨域请求。我知道有限制,但认为它们对于本地文件系统和本地服务器是放松的。 (并且预期会有更多描述性的错误信息)
谢谢大家!
答案 0 :(得分:1)
湖泊似乎只是一个缓存问题。只需删除Internet Explorer中的缓存并重复您的实验。所有HTTP GET请求都将被缓存。 IE缓存还有ajax
个响应。如果您不喜欢它,可以在URL中附加“?p = blala”等文本。其中'p'是将被解释为参数名称的名称,文本'blala'在每个请求中必须是唯一的。通常一个使用(new Date).getTime()
构造来生成这样的'blala'。 IE将“思考”,该URL是新的,并将始终向服务器发送请求。
更新:将在所有浏览器中缓存静态数据,尤其是在Web服务器明确允许的情况下:请参阅Cache-Control: max-age=7200, public, proxy-revalidate
是来自服务器的响应。只需尝试转到http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first并修改行
xmlhttp.open("GET","ajax_info.txt",true);
到
xmlhttp.open("GET","ajax_info.txt?p=" + (new Date).getTime(),true);
然后点击“编辑并点击我>>”。然后,如果单击“更改内容”按钮,您将在HTTP流量中看到完整数据包含。我没有看到206代码的任何时间。如果响应在HTTP标头中包含“Accept-Ranges: bytes
”和“Content-Range
”之类的内容,则可以在http://benramsey.com/archives/206-partial-content-and-range-requests/上阅读