http协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等

http报文

  1. 客户端请求 request
    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

    • 格式
      图片描述

      GET /hello.txt HTTP/1.1
      User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
      Host: www.example.com
      Accept-Language: en, mi
  2. 服务端响应 response
    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

    • 格式
      图片描述

      HTTP/1.1 200 OK
      Date: Mon, 27 Jul 2009 12:28:53 GMT
      Server: Apache
      Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
      ETag: "34aa387-d-1568eb00"
      Accept-Ranges: bytes
      Content-Length: 51
      Vary: Accept-Encoding
      Content-Type: text/plain

http头部

HTTP 消息头允许客户端和服务器通过 request和 response传递附加信息。一个请求头由名称(不区分大小写)后跟一个冒号“:”,冒号后跟具体的值(不带换行符)组成。该值前面的引导空白会被忽略。
自定专用消息头可通过'X-' 前缀来添加;但是这种用法被IETF在2012年6月发布的 RFC5548 中明确弃用,原因是其会在非标准字段成为标准时造成不便;其他的消息头在 IANA 注册表 中列出, 其原始内容在 RFC 4229 中定义。 此外,IANA 还维护着被提议的新HTTP 消息头注册表.
根据不同上下文,可将消息头分为:
一般头: 同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。
请求头: 包含更多有关要获取的资源或客户端本身信息的消息头。
响应头: 包含有关响应的补充信息,如其位置或服务器本身(名称和版本等)的消息头。
实体头: 包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIME类型。

头部值如下:

  • Accept
    告诉WEB服务器自己接受什么介质类型,/ 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type。
  • Accept-Charset
    浏览器申明自己接收的字符集
  • Accept-Encoding
    浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)
  • Accept-Language
    浏览器申明自己接收的语言

语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等。

  • Accept-Ranges
    WEB服务器表明自己是否接受获取其某个实体的一部分(比如文件的一部分)的请求。bytes:表示接受,none:表示不接受。
  • Access-Control-Allow-Credentials
  • Access-Control-Allow-Headers
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Origin
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age
  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • Age
  • Allow
  • Alt-Svc [我来译!]
  • Authorization
  • Cache-Control
  • Clear-Site-Data
  • Connection
  • Content-Disposition
  • Content-Encoding
  • Content-Language
  • Content-Length
  • Content-Location
  • Content-Range
  • Content-Security-Policy
  • Content-Security-Policy-Report-Only
  • Content-Type
  • Cookie
  • Cookie2
  • DNT
  • Date
  • ETag
  • Early-Data [我来译!]
  • Expect
  • Expect-CT
  • Expires
  • Feature-Policy [我来译!]
  • Forwarded
  • From
  • Host
  • If-Match
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Index [我来译!]
  • Keep-Alive
  • Large-Allocation
  • Last-Modified
  • Location
  • Origin
  • Pragma
  • Proxy-Authenticate
  • Proxy-Authorization
  • Public-Key-Pins
  • Public-Key-Pins-Report-Only
  • Range
  • Referer
  • Referrer-Policy
  • Retry-After
  • Sec-WebSocket-Accept [我来译!]
  • Server
  • Server-Timing [我来译!]
  • Set-Cookie
  • Set-Cookie2
  • SourceMap
  • HTTP Strict Transport Security
  • TE
  • Timing-Allow-Origin
  • Tk
  • Trailer
  • Transfer-Encoding
  • Upgrade-Insecure-Requests
  • User-Agent
  • Vary
  • Via
  • WWW-Authenticate
  • Warning
  • X-Content-Type-Options
  • DNS 预读取
  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Forwarded-Proto
  • X-Frame-Options 响应头
  • X-XSS-Protection

https://www.jianshu.com/p/6e8...
https://www.cnblogs.com/s3131...


caoweiju
1.5k 声望53 粉丝

class Myself {