Never too old to learn.

http协议自学(1)

Posted on By Andy Zhu

http协议是浏览器与服务端建立连接的一套国际通用准则,大部分浏览器的内核中都含有http协议的成分

我们首先建立一个虚拟http服务端来检测客户端(即浏览器)向服务端发送了什么消息:

uses zul_socket;
var
 a:Tserver;
 b:Vlabel;
 msg:ansistring;
begin
 a:=Tserver.create;
 a.port:=8080;
 a.init;
 while true do
  begin
   b:=a.accept;
   msg:=a.recv(b);
   while msg<>'' do
    begin
     writeln(msg);
     msg:=a.recv(b);
    end;
  end;
end.

在浏览器中输入localhost:8080然后服务端显示出了如下信息:

GET / HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/70.0.3538.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9



解释:

  1. GET表示请求的方式,有GETPOST和其他很多种类型
  2. /表示请求的路径,如果在浏览器中输入的是localhost:8080/test则该路径为/test
  3. HTTP/1.1表示协议以及版本号
  4. Host: localhost:8080就是你输入的网址
  5. Connection: keep-alive表示连接的方式为活跃连接
  6. Cache-Control: max-age=0最大缓存数,可以设置为no-cache
  7. Upgrade-Insecure-Requests: 1表示浏览器跟服务器说自己能看懂你上次发过来的那条信息,并且自动使用https
  8. User-Agent表示浏览器的内核
  9. Accept告诉服务器当前客户端可以接收的文档的类型。其实这里包含了*/*,就表示什么都可以接收
  10. Accept-Encoding表示支持的编码
  11. Accept-Language表示支持的语言