学习笔记——HTTP协议

HTTP协议

1.HTTP协议介绍

HTTP请求方法

HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS,PUT,PATCH,DELETE,TRACE和CONNECT方法。

方法 描述
GET 请求指定的页面信息,并返回实体主体
HEAD 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
PUT 从客户端向服务器传送的数据取代指定的文档的内容
DELETE 请求服务器删除指定的页面
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到请求,主要用于测试或诊断
PATCH 是对PUT方法的补充,用来对已知资源进行局部更新

HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文。

请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本。
格式如下:Method Request-URI HTTP-Version CRLF
其中 Method表示请求方法;
Request-URI是一个统一资源标识符;
HTTP-Version表示请求的HTTP协议版本;
CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

Cookie通过在客户端记录信息确定用户身份。
Keep-alive:在一次TCP连接中可以持续发送多份数据而不会断开连接,早期HTTP一个请求发起一次TCP连接。
请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本。
在这里插入图片描述>>HTTP请求正文
只有在发送POST请求时才会有请求正文,GET方法并没有请求正文。
在这里插入图片描述

请求

 GET / HTTP/1.0
 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*

服务器响应

HTTP/1.0 200 OK 
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84

Content-Type 字段
关于字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用。
下面是一些常见的Content-Type字段的值。

    text/plain
    text/html
    text/css
    image/jpeg
    image/png
    image/svg+xml
    audio/mp4
    video/mp4
    application/javascript
    application/pdf
    application/zip
    application/atom+xml

这些数据类型总称为MIME type,每个值包括一级类型和二级类型,之间用斜杠分隔。
MIME type还可以在尾部使用分号,添加参数。

 Content-Type: text/html; charset=utf-8

上面的类型表明,发送的是网页,而且编码是UTF-8。
客户端请求的时候,可以使用Accept字段声明自己可以接受哪些数据格式。

 Accept: */*

上面代码中,客户端声明自己可以接受任何格式的数据。

Content-Encoding 字段
由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法。

Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate

客户端在请求时,用Accept-Encoding字段说明自己可以接受哪些压缩方法。

Accept-Encoding: gzip, deflate

2.HTTP状态码

HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。
HTTP状态码被分为五大类,目前我们使用的HTTP协议版本是1.1,支持以下的状态码。

状态码 已定义范围 分类
1XX 100-101 信息提示
2XX 200-206 请求成功200、201
3XX 300-307 请求重定向301
4XX 400-417 客户端错误403、404、405
5XX 500-505 服务器错误500

3.HTTP响应头的含义

Response响应头字段
在这里插入图片描述

Data:当前的GMT时间
Access:服务器支持哪些请求方法(如GET、POST等)
Server:服务器名字
Content-length:表示内容长度
Content-Type:表示后面的文档属于什么MIME类型
Expires:应该在什么时候认为文档已经过期,从而不再缓存它
Set-Cookie:设置和页面关联的Cookie
Location:表示客户应当到哪里去提取文档

4.HTTP中的URL

URL,全称是Uniform Resoure Locatoor,翻译过来是“统一资源定位符”

>URL包含:

  >协议
  >用户名:密码
  >主机 - 子域名.域名.顶级域名(或IP)
  >端口号
  >目录/文件名.文件后缀
  >参数=值标志
  >锚部分

>格式
协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#锚部分

URL编码格式
只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*’(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。
同源策略
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。
URL格式中,协议,主机,端口三部分相同,才能算是同源。以下是跨源访问方式。

  Jsonp(GET请求)
  Websocket
  CROS(“跨域资源共享”(Cross-origin resource sharing)),允许发送任何请求

猜你喜欢

转载自blog.csdn.net/h_adam/article/details/120067956