HTTPの基本的な構造

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/m0_38060977/article/details/102753870

ネットワーク層

ネットワーク層は
第一層との間の部分が削除されないヘッダ情報は、各レイヤの受信端を介して、追加されないであろう層を介して、データ送信側を送信します
image.png

TCP / IPの義務
image.png

二つの要求パケット

要求メッセージは、要求メソッド、URL、プロトコルのバージョンである、オプションヘッダフィールドを要求し、コンテンツエンティティが構成される。
image.png

リクエストライン

要求ライン(要求ラインは)3つの部分に分かれている:要求方法、プロトコル・バージョン要求アドレスと

リクエストメソッド

(また、「アクション」と呼ばれる)CPC 9の方法で定義されたHTTP / 1.1プロトコルは、別の方法操作でリソースを指定します
image.png

リクエストヘッダ

リクエストヘッダは、追加情報のために使用することができる伝送フォーマットは次のとおり键: 值、コロンの後注空格

要求と応答の共通の一般的なヘッダー

image.png

一般的な要求ヘッダー

image.png

リクエストボディ

異なるアプリケーションシナリオによると、HTTPリクエストのリクエストボディは、三つの異なる形式があります

最初:

一般的な要求身体のあらゆるタイプのモバイル開発者は、サーバは、処理された要求は、POST JSONなど、自分自身を解決する必要がリクエストボディを解決しません、それは一種のです
image.png

第二:

第二及び第三の固定フォーマットを持って、サーバー側の開発者の両方を知ることが最初です。キーと値のペアの複数&キーと値の間の接続の中で=リンク、およびASCII文字のみで、ASCII文字は非コードURLENCODEを使用する必要があります。ここではURLリクエストのクエリ文字列の形式要件のフォーマットは、
image.png

第三の

第三种请求体被分成多个部分, 文件上传 时会被使用,这种格式最先是被用于邮件传输中,每个字段/文件都被 boundary(Content-Type中指定的)分成单独的,每段以--加 boundary 开头,然后是该段的描述头,描述头之后空一行接内容,请求结束的标识为boundary 后面加--

image.png
区分是否被当成文件的关键是 Content-Disposition 是否包含 filename,因为文件有不同的类型,所以还要使用 Content-Type 指示文件的类型,如果不知道是什么类型取值可以为 application/octet-stream 表示文件是一个二进制的文件,如果不是文件则 Content-Type 可以省略

三 响应报文

响应报文基本上由协议版本,状态码,用以解释状态的原因短语,可选的响应首部字段以及实体主体构成。
image.png

HTTP 响应的格式上除状态行(第一行)与请求报文的请求行不一样之外,其他的就格式而言是一样的,但排除状态行和请求行的区别,从 Header 上还是可以区分出 HTTP 请求和 HTTP 响应的区别的,怎么区别就要看前面的 Header 啦
image.png

响应状态行

2XX 成功

  • 200 OK,表示从客户端发来的请求在服务器端被正确处理
  • 204 No content,表示请求成功,但响应报文不含实体的主体部分
  • 206 Partial Content,进行范围请求

3XX 重定向

  • 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
  • 302 found,临时性重定向,表示资源临时被分配了新的 URL
  • 303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源
  • 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
  • 307 temporary redirect,临时重定向,和302含义相同

4XX 客户端错误

  • 400 bad request,请求报文存在语法错误
  • 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
  • 403 forbidden,表示对请求资源的访问被服务器拒绝
  • 404 not found,表示在服务器上没有找到请求的资源

5XX 服务器错误

  • 500 internal sever error,表示服务器端在执行请求时发生了错误
  • 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求

响应头

响应头同样可用于传递一些附加信息
image.png

常见的响应 Header

image.png

响应体

响应体也就是网页的正文内容,一般在响应头中会用 Content-Length 来明确响应体的长度,便于浏览器接收,对于大数据量的正文信息,也会使用chunked的编码方式。

四 POST和GET

副作用指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的。
幂等指发送 M 和 N 次请求(两者不相同且都大于1),服务器上资源的状态一致。注册10个和11个帐号是不幂等的,对文章进行更改10次和11次是幂等的。

  1. Get 请求能缓存,Post 不能
  2. Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的。
  3. Post 可以通过 request body来传输比 Get 更多的数据,Get 没有这个技术
  4. URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的
  5. Post 支持更多的编码类型且不对数据类型限制

五 HTTP 缓存

缓存相关 header

  • Expires

响应头,代表该资源的过期时间。

  • Cache-Control

请求/响应头,缓存控制字段,精确控制缓存策略。

  • If-Modified-Since

请求头,资源最近修改时间,由浏览器告诉服务器。

  • Last-Modified

响应头,资源最近修改时间,由服务器告诉浏览器。

  • Etag

响应头,资源标识,由服务器告诉浏览器。

  • もし-なしマッチ

リクエストヘッダは、ブラウザによって識別されるキャッシュリソースは、サーバーに指示します。

参照

  1. インタビュー - HTTPネットワーク
  2. プログラマは、HTTPのポイントを理解します
  3. インタビューHTTPキャッシュの選択
  4. HTTPキャッシング

おすすめ

転載: blog.csdn.net/m0_38060977/article/details/102753870