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