这篇来学习下HTTP请求,发送一个HTTP请求,其中的消息内容同样遵守上一篇的四个部分,本篇先从请求的角度,展开这四个部分,主要就是三个部分,请求起始行,请求头和字段,请求正文,最后来一个通过浏览器自带的debug工具来看看本篇和前面学习那些概念,看看能不能对得上。通过这种实战,更好了解这些名词的概念和作用。
先解释以下前面CRLF这个缩写的含义:回车换行的意思。
1.请求起始行
Request起始行以方法(常见Get 和Post)标记开头,后跟Request-URI和协议版本.以回车换行结束。以下是一个例子
get https://www.baidu.com/ http/1.1
现在浏览器上按下F12,关于请求起始行已经没有这么规范格式写了,我记得HttpWatch这个工具是有的,但是这个工具免费版本功能基本上没法用,专业版又要收费,不太推荐这个工具。(网上免费key 破解版除外)
2.请求方法
上面提到了请求方法,大部分人只指定get和post,以及put和delete,当然其他几个不常用,记不住也是可
Get | GET方法用于使用给定的URI从给定服务器检索信息。 使用GET的请求应仅检索数据,并且不应对数据产生其他影响。记住一句话就像:get是从服务器拿数据。 |
Post | post请求就是往服务器发送数据,例如用户注册和文件上传,记住这句话:post是写入数据到服务器。 |
Head | 和Get类似,但它只传输状态行和头部分 |
Put | 用上传内容替换目标资源内容,就是更新资源的操作。 |
Delete | 通过请求URI,从服务器上删除对应的资源。 |
Connect | 建立到给定URI标识的服务器的连接。 |
Options | 描述目标资源的通信选项。 |
Trace | 随着目标资源的路径执行消息循环测试。 |
重点掌握get和post,然后是Put和Delete,其他可以不去学习。
3.请求头字段
请求头字段允许客户端将有关请求以及客户端本身的其他信息传递给服务器。例如,告诉服务器,客户端是什么压缩格式,服务端如果支持这种压缩格式,就会返回对应压缩格式的内容。还有编码等。在请求头有多少个字段,取决于需求,以下是一些重要的请求头字段。
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referer
TE
User-Agent
以下看一个Get和Post请求的消息
Get请求消息
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Post请求消息
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID=string&content=string&/paramsXML=string