效果圖如下:
前端發(fā)送一次請(qǐng)求,后端接收到兩次,第二次是:GET /favicon.ico HTTP/1.1
可以看到頁(yè)簽上標(biāo)題欄前面是個(gè)地球,這個(gè)是默認(rèn)的。
原因就是后臺(tái)給的響應(yīng)里沒(méi)有指定這個(gè)圖標(biāo),他再請(qǐng)求一次,就是請(qǐng)求這個(gè)資源。
解決方法,在響應(yīng)里加上這個(gè)元素,指定下圖標(biāo)內(nèi)容:
<link rel="shortcut icon" href="https://g.csdnimg.cn/static/logo/favicon32.ico" type="image/x-icon" />
其中 https://g.csdnimg.cn/static/logo/favicon32.ico 這個(gè)是 csdn 網(wǎng)站上的圖標(biāo),具體的可以自己來(lái)指定。
修改后再次測(cè)試:
可以看到只有一次請(qǐng)求了,而且頁(yè)簽前面也有圖標(biāo)了。
測(cè)試代碼如下:
package com.test.test;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class SocketTest {public static void main(String[] args
) throws IOException {ServerSocket server
= new ServerSocket(10010);int k
= 0;while(true) {Socket socket_client
= server
.accept();InputStream in_put
= socket_client
.getInputStream();StringBuffer response
= new StringBuffer();BufferedReader input
= new BufferedReader(new InputStreamReader(in_put
,"GBK"));String url
= input
.readLine();if(url
!= null) {String url_new
= java.net.URLDecoder.decode(url
, "UTF-8");k
= k
+ 1;System.out
.println("\n循環(huán)次數(shù):" + k
);System.out
.println(url_new
);}String response_head
= "HTTP/1.1 200 OK\r\n" +"Content-type:text/html\r\n\r\n";String response_body
= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" + "<link rel=\"shortcut icon\" href=\"https://g.csdnimg.cn/static/logo/favicon32.ico\" type=\"image/x-icon\" />" +"<style>body{font-family:\"黑體\"}</style>" +"歡迎來(lái)到小藍(lán)棗的博客<br>" +"Welcome to xiaolanzao's blog!";response
.append(response_head
+ response_body
);OutputStream out_put
= socket_client
.getOutputStream();out_put
.write(response
.toString().getBytes());out_put
.close();in_put
.close();socket_client
.close();}}
}
喜歡的點(diǎn)個(gè)贊?吧!
總結(jié)
以上是生活随笔為你收集整理的Java 技术篇 - 前端浏览器发送一次url请求后端ServerSocket接收到两次请求原因及解决方法,GET /favicon.ico HTTP/1.1问题处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。