HTTP报文

http请求报文由请求行、请求头部和请求数据组成。

请求行包括请求方法、url和协议版本。

请求方法有GET, POST, HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT。

1.GET方法用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。GET请求是可以缓存的,我们可以从浏览器历史记录中查找到GET请求,还可以把它收藏到书签中;且GET请求有长度限制,仅用于请求数据。

2.POST方法用于将数据发送到服务器以创建或更新资源,它要求服务器确认请求中包含的内容作为URI区分的web资源的另一个下属。POST请求永远不会被缓存,且对数据长度没有限制;我们无法从浏览器历史记录中查找到POST请求。

3.HEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。

4.PUT方法用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容,它会将包含的元素放在所提供的URI下,如果URI指示的是当前资源,则会被更改。如果URI未指示当前资源,则服务器可以使用该URI创建资源。

5.DELETE方法用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容。

6.CONNECT方法用来建立到给定URI标识的服务器的隧道;它通过简单的TCP/IP隧道更改请求连接,通常是使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。

7.OPTIONS方法用来描述目标资源的通信选项,返回服务器支持预定义URL的HTTP策略

8.TRACE方法用于沿着目标资源的路径执行消息环回测试;它回应收到的请求,以便客户可以看到中间服务器进行了哪些进度或增量。

url即请求地址url;

协议版本;即http/1.0或者http/1.1等

请求头部:

以键值对的形式存在,每条头部都以回车换行符结尾,最后多了一个回车换行符,用来分割请求数据。头部携带了一些信息,用以实现一些功能,如缓存功能。

请求数据里包含了需要传输的信息数据。

http响应报文

由状态行、响应头部和数据主体组成。

状态行:

  • 版本:跟请求报文一样
  • 状态码:平时看到的404、200等;
  • 短语:404Not Found等这些原因短语

响应头部:和请求报文一样

数据主体:请求成功后返回的结果

ps:常见状态码及其含义:

  • 200 OK:客户端请求成功;
  • 206 Partial Content:成功执行了一个部分请求(用于断点续传);
  • 301 Moved Permanent: 请求的url被移除了(用于重定向);
  • 304 Not Modified: 条件请求进行再验证,资源未改变;
  • 400 Bad Request: 客户端请求语法错误,服务器无法解析;
  • 401 Unauthorized: 请求未经授权;
  • 403 Forbidden: 服务器收到请求拒绝服务;
  • 404 Not Found: 请求资源不存在;
  • 500 Internal Server Error: 服务器不可预期错误;
  • 503 Server Unavailable: 服务器当前不能处理客户端请求。

ps 常见的http请求头

  • Accept:text/html 浏览器可以接受服务器回发的类型为text/html,Accept:*/*表示浏览器可以处理所有类型,(一般浏览器给服务器都是发这个)。
  • Accept-Encoding:gzip,deflate浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate).
  • Accept-Language: zh-CN,zh;q=0.9 浏览器申明自己接收的语言。
  • Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
  • connection: close 代表一个Request完成后,客户端和服务端之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。
  • Host:www.baidu.com请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。
  • User-Agent 告诉http服务器,客户端使用的操作系统和浏览器名称和版本。
  • Cache-Control:private 默认为private  响应只能够作为私有的缓存,不能再用户间共享

    Cache-Control:public 响应会被缓存,并且在多用户间共享。正常情况, 如果要求HTTP认证,响应会自动设置为 private.

    Cache-Control:must-revalidate  响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。

    Cache-Control:no-cache  响应不会被缓存,而是实时向服务器端请求资源。

    Cache-Control:max-age=10 设置缓存最大的有效时间,但是这个参数定义的是时间大小(比如:60)而不是确定的时间点。单位是[秒 seconds]。

    Cache-Control:no-store 在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。 

等等。

参考https://www.bilibili.com/read/cv6259072/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值