jajakala 2011-11-27 23:28
浏览 277
已结题

浏览器发送请求的具体情况是什么

最近在看《how tomcat works》,在第一章模拟服务器时有一个错误,不知道如何解决。

当我在浏览器中输入localhost:8080/yes时,无论是firefox还是chrome,都会发送多次请求,下面是我服务器打印出得请求信息

[code="java"]
start
accepted
GET /yes HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
start
accepted
GET /favicon.ico HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
start
accepted
GET /favicon.ico HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
start
accepted
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.stillness.character1.Request.parseURI(Request.java:97)
at com.stillness.character1.Request.getURI(Request.java:105)
at com.stillness.character1.HttpServer.await(HttpServer.java:55)
at com.stillness.character1.HttpServer.main(HttpServer.java:70)
[/code]

分别请求 /yes /favicon.ico /favicon.ico

其中请求/yes时,返回404错误;而请求/favicon.ico时,我的目录下没有该图标,返回的应该也是404;

第四次请求,根本不存在请求头文件什么的,似乎只是建立连接,然后不发送信息就断掉了。

错误在chrome中每次都会出,在firefox中偶尔会出。

---------------源文件就是下面的了

  • 写回答

4条回答 默认 最新

  • jiangguangxian 2011-11-28 09:13
    关注
    1. 首先对于你最后的错误: [quote] Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
      [/quote] 是因为你在parseURI的时候,下面这句,你怎么能保证requestHeander的[0]中一定能用" "分隔成两个呢?split(" ")[1] 是需要增加判断的,你也可以打日志看看里面到底是什么? [quote] requestURI=((String)requestHeader[0]).split(" ")[1]; [/quote]

    2, 对于favicon.ico ,我想做过网站的人不知道这个有点说不过去。 这个是你的浏览器输入网址前面的那个图标。这在chrome和firefox中是会自动获取的,ie中好像是不获取的,需要通过设置。这个你可以看下tomcat的Tomcat 6.0\webapps\ROOT下面的favicon.icon.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月19日

悬赏问题

  • ¥15 武汉岩海低应变分析软件,导数据库里不显示波形图
  • ¥15 CreateBitmapFromWicBitmap内存释放问题。
  • ¥30 win c++ socket
  • ¥15 CanMv K210开发板实现功能
  • ¥15 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题