http请求与响应报文
请求和响应报文都有三部分,起始行,首部,主体。
请求报文:
GET /test/1.txt HTTP/1.1 //起始行 :GET是请求方法,/test/1.txt是文件目录, HTTP/1.1是版本号
Host:www.baidu.com
Accept:text/html, image/gif, image/jpeg
Accept-language: en //首部 一般是名称:值的形式;依次是域名,请求的文件格式、语言(文件格式是MIME格式)
一般没有主体,如果有,就空一行然后写主体部分
响应报文:
HTTP/1.1 200 OK //起始行 :版本号,状态码
Content-type: text/html, image/gif, image/jpeg
Content-length: 19 //首部 ,返回文件格式,长度等
<html>...</html>// 主体部分,与上边空行
无状态无连接
无状态:服务器不知道客户端是什么状态,每个请求都是独立的。
无连接:服务器处理完客户的请求,并收到客户的应答后,就断开连接。
http请求方法
我们向服务器发起请求,有的是要发给服务器文件,有的是访问文件,这就是不同的请求方法,上边我们的例子是GET方法,就是从服务器获取资源,还有其它常用的方法:
MIME
前边的text/html, image/gif, image/jpeg 就是MIME类型的文本标记,与http数据包一起传输,用来方便浏览器处理。我们发起请求的时候可能不是从一个服务器上获取所有文件,可能某些图片、视频要来自其它网站服务器。可以在浏览器中按F12,然后点击网络,来看自己当前服务器的请求及状态。
状态码
每条 HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码, 告知客户端请求是否成功,或者是否需要采取其他动作。常见状态码:
web端口
web服务器有很多服务,端口号区分服务器不同的服务。我们发送请求后服务器根据端口号把请求输送到不同的端口进行响应。web服务器默认端口是80,平时我们直接访问浏览器就是默认80端口。
telnet协议
是远程登陆协议,我们打开telnet功能后,可以通过telnet远程登陆访问,类似客户端,默认端口是23
如下输入:
telnet www.baidu.com
//就会失败,可能没开23端口
但是输入:
telnet www.baidu.com 80就可以,因为80端口一定开放
成功了就是这个界面,然后点击ctrl+】开启回显,再点击enter
就可以进行编辑了,输入请求头了,如:
GET/1.html HTTP/1.1
Host:www.baidu.com
这只是随便输的,假设baidu的http版本是1.1,而且根目录有一个文件叫1.html,就会收到服务器返回的数据
curl
curl是linux系统下访问网站的命令,mac系统自带curl,但是windows下没有,就需要我们自己下载安装,具体见别人的文章,比较简单,安装好后就可以在cmd中使用了。
如:
curl www.baidu.com可以获取baidu的html,但是会乱码。
解决方案一:
在输入命令前先输入chcp 65001然后enter,再输入命令就可以:
方案2:
安装iconv,在输入指令转码。直接输入:
curl www.baidu.com -i | iconv -f utf-8 -t gbk
域名有www与没有www区别
网站如qq.com设置好域名之后,为了更好的处理服务,就设置了子域名www.qq.com、mail.qq.com
只是为了区分服务做的子域名,所以不必纠结。
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
- Author -
luluoluoa声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@