不仅仅html会请求服务端,包括js、css、img等等都会重新请求服务端。
你可以把客户端请求发过来的url打印出来看看。

解决方案 »

  1.   

    这是在chrome中的结果现在在FireFox中测试一切正常又试了IE10,和chrome中的结果类似,但是刷新的时候会报错:
    java.io.IOException: 远程主机强迫关闭了一个现有的连接。
    at sun.nio.ch.SocketDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
    at sun.nio.ch.IOUtil.read(IOUtil.java:197)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
    at test5.SimpleHttpServerIO.service(SimpleHttpServerIO.java:33)
    at test5.SimpleHttpServerIO.main(SimpleHttpServerIO.java:66)
      

  2.   

    估计是chrome自己向服务器发送了几次请求
      

  3.   

    我猜有个icon,链接旁边那个。
      

  4.   

    可能是拿tab上那个小icon导致的。建议抓一下包试试看。
      

  5.   


    用chrome console看的和抓包工具抓的一样吗?
      

  6.   

    浏览器会发起favicon.ico的访问,楼主可以下个抓包工具抓一下包看看。
      

  7.   


    用chrome console看的和抓包工具抓的一样吗?理论上应该是一样的,可是,你现在不就是出现了不一样的情况 嘛,那就要想办法找原因了。
      

  8.   


    确实是的~为啥chrome console里没这个请求呢
      

  9.   


    用chrome console看的和抓包工具抓的一样吗?理论上应该是一样的,可是,你现在不就是出现了不一样的情况 嘛,那就要想办法找原因了。抓了,但是localhost/127.0.0.1的抓不到,网上看了抓到192.168.x.x这种的,但是这种每次只有2次请求
    1次是真正的,1次是favourite.ico,三次请求的只在localhost这种访问方式下才会出现,还是很疑惑啊~
      

  10.   


    用chrome console看的和抓包工具抓的一样吗?理论上应该是一样的,可是,你现在不就是出现了不一样的情况 嘛,那就要想办法找原因了。抓了,但是localhost/127.0.0.1的抓不到,网上看了抓到192.168.x.x这种的,但是这种每次只有2次请求
    1次是真正的,1次是favourite.ico,三次请求的只在localhost这种访问方式下才会出现,还是很疑惑啊~我也很好奇是什么内容。那实在不行,你把chrome  发上来的包打印出来看看,看它到底 请求的是什么 内容。
      

  11.   


    用chrome console看的和抓包工具抓的一样吗?理论上应该是一样的,可是,你现在不就是出现了不一样的情况 嘛,那就要想办法找原因了。抓了,但是localhost/127.0.0.1的抓不到,网上看了抓到192.168.x.x这种的,但是这种每次只有2次请求
    1次是真正的,1次是favourite.ico,三次请求的只在localhost这种访问方式下才会出现,还是很疑惑啊~我也很好奇是什么内容。那实在不行,你把chrome  发上来的包打印出来看看,看它到底 请求的是什么 内容。我能抓到的包就只有2个,第三个抓不到啊,只能localhost来访问才会有,127貌似也不会有你可以把代码拷了试试噢~
      

  12.   


     这个是IE下的情况吧,chrome和FF貌似不会
      

  13.   


     这个是IE下的情况吧,chrome和FF貌似不会说的是chrome...
      

  14.   


     这个是IE下的情况吧,chrome和FF貌似不会说的是chrome...奇怪~~~另外你连上发了几次请求?
      

  15.   


    三次,第一次是html,第二次什么都没发,直接断开了;第三次就是 GET /favicon.ico HTTP/1.1
      

  16.   


    三次,第一次是html,第二次什么都没发,直接断开了;第三次就是 GET /favicon.ico HTTP/1.1你试试FF和IE看看
      

  17.   


    三次,第一次是html,第二次什么都没发,直接断开了;第三次就是 GET /favicon.ico HTTP/1.1你试试FF和IE看看
    都是一个。但是,IE/FF都采用了长连接的方式取数据。最后,你到底 想要知道什么
      

  18.   


    三次,第一次是html,第二次什么都没发,直接断开了;第三次就是 GET /favicon.ico HTTP/1.1你试试FF和IE看看
    都是一个。但是,IE/FF都采用了长连接的方式取数据。最后,你到底 想要知道什么为什么会发三次请求?
    除了html和icon,还有一次是为了什么另外怎么证明IE/FF用长连接取数据?
      

  19.   

    第一次  空   服务器接到 空,会做什么,不知道。   持久连接 是 HTTP1.1 的新特性。      HTTP1.1 也够老的。
    第二次  
    第3次  
      

  20.   


    确实是的~为啥chrome console里没这个请求呢
    浏览器的机制我也不大懂。
      

  21.   


    三次,第一次是html,第二次什么都没发,直接断开了;第三次就是 GET /favicon.ico HTTP/1.1你试试FF和IE看看
    都是一个。但是,IE/FF都采用了长连接的方式取数据。最后,你到底 想要知道什么为什么会发三次请求?
    除了html和icon,还有一次是为了什么另外怎么证明IE/FF用长连接取数据?
    根据请求头里面的keepalive来判断;
      

  22.   


    三次,第一次是html,第二次什么都没发,直接断开了;第三次就是 GET /favicon.ico HTTP/1.1你试试FF和IE看看
    都是一个。但是,IE/FF都采用了长连接的方式取数据。最后,你到底 想要知道什么为什么会发三次请求?
    除了html和icon,还有一次是为了什么另外怎么证明IE/FF用长连接取数据?
    根据请求头里面的keepalive来判断;我看了chrome里的请求也有keep-alive啊
      

  23.   


    多谢提醒。。看到了3次请求,1次是空的,浏览器怎么会发这么一条请求呢?1.浏览器会发favicon.ico的访问,这个自己判断一下过滤就可以了;
    2.3次请求,你看一下,客户端发起就几次?服务端收到了几次?会不会是你服务端的缓冲池太小了?
      

  24.   

    老实说,你这个服务器写的是有问题的。关键的content-length这个头没有,可能是chrome/ff/ie几个浏览器的容错的机制是不一样造成你现在这样的结果。对于firefox/ie这两个浏览器,你可能还要重做一下测试,个人觉得实际上还是两个连接。第二个连接并没有实际来的及发起,这是因为返回的response并不符合http协议的规定。