怎么做刷qq业务网站,中国建设部官方网站监理转注册,wordpress扫码下载,购物网站如何做Http基础 HTTP基础HTTP协议请求方法持久连接管线化 无状态协议使用Cookie状态管理 状态码1XX2XX OK200 OK204 NO Content206 Content-Range 3XX 重定向301302304307 4XX400401403404 5XX500503 HTTP报文请求报文响应报文通用首部字段Cache-ControlConnectionDate请求首部字段Ac… Http基础 HTTP基础HTTP协议请求方法持久连接管线化 无状态协议使用Cookie状态管理 状态码1XX2XX OK200 OK204 NO Content206 Content-Range 3XX 重定向301302304307 4XX400401403404 5XX500503 HTTP报文请求报文响应报文通用首部字段Cache-ControlConnectionDate请求首部字段AcceptAccept-CharsetAccept-CharsetAccept-EncodingAccept-LanguageHostIf-MatchIf-Modified-SinceIf-None-MatchReferer User-Agent 响应首部字段Accept-RangesAgeLocationServer 实体首部字段AllowContent-EncodingContent-LanguageContent-TypeExpiresLast-Modified 跨域-cors两种请求简单请求浏览器不同的处理方式 非简单请求 HTTP基础
HTTP协议
HTTP- Hyper Text Transfer Protocl 超文本传输协议 对我们的客户端和服务端值之间数据之间实现传输(文字、图片、音频、视频等等)
客户端 服务端通信
客户端:请求访问文本资源的一端服务端: 提供资源响应的一端
HTTP协议规定:客户端发起请求、服务端回复响应 先从客户端建立通信、服务端在没有接收通信之前不发送响应
属于应用层 第一层HTTP
请求方法
GET 一获取资源POST - 传输实体主体 虽然GET也可以传输实体主体但是一般我们不用 PUT传输文件HEAD -获取报文首部 HEAD 不返回报文主体部分 DELETE 一删除文件OPTION -预检请求TRACE 一 追踪路径
持久连接
HTTP请求在应用层核心通道基于TCP连接 页面有很多的图片在发送请求访问HTML也可能包含其他的资源、所以我们每一次请求都要建立一次TCP的链接和断开增加了通信量的开销
过去的http连接 建立TCP连接三次握手 断开TCP连接四次挥手
Http1.1中ConnectionKeep-Alive Connection代表TCP信道的链接 只要任意一端没有明确提出端口链接则保持TCP连接状态 建立一次TCP链接可以一次性的发送所有http请求 好处:减少了TCP链接的重复建立以及我们断开链接的开销、减轻了服务器的负载、提高了运行速度 HTTP 1.1 默认就是持久连接
如何区分http用的是同一个TCP信道 connectionID(连接ID相同的是同一个TCP信道 connectionID标识 标识单个请求新建立信道索引
管线化
并行发送多个请求不是一个一个等着响应
无状态协议
http协议就是一种无状态协议不保存状态 不对请求和响应之间的通信状态进行保存 目的更快的处理大量事务、确保协议的可伸缩性
使用Cookie状态管理
引入cookie 服务端 set-Cookie 通知客户端保存Cookie 客户端下一次在进行发送的时候会将之前设置的cookie进行携带 性能: cookie 每次请求都会携带性能受到影响 跨域:cookie无法跨域调用需要指定一个作用域
状态码
负责客户端HTTP请求的返回结果
当客户端向服务器发送请求时候描述返回的请求结果。能够知道服务端是正常除了请求还是有错误
1XX
信息性状态码 作用:接收的请求正在处理中
2XX OK
Success -成功状态码 表示请求处理正常且成功
200 OK
表示从客户端发来的请求在服务端进行正常处理了
204 NO Content
表示服务器接收的请求已经成功处理但是返回的响应报文中不包含实体的主体部分而且不返回任务实体的主体 场景:从客户端发送请求给服务端对客户端不需要发送新信息内容的情况
206 Content-Range
表示客户端进行了范围请求 Content-Range
3XX 重定向
表示浏览器需要执行某些特殊的处理以及正确处理请求
301
永久性重定向请求该资源时候每次都返回一个新的url
302
临时性重定向请求该资源时候每次都返回一个新的url可能只限于本次 代表资源不是被永久移动只是临时的。
304
表示发送一些附带条件的请求。
加上一些附带的条件 if-Match, if-Modified-since ,if-Range
虽然是3xx系列但是和重定向没啥关系
307
临时重定向期望客户端保持请求方法不变向新的地址发出请求
4XX
客户端错误
400
表示请求报文中存在语法错误 错误发生、需要修改请求的内容然后重新发送浏览器会像200 对待
401
表示需要有通过HTTP认证的认证信息
403
表示对请求资源的访问被服务器拒绝了。而且没有必要给出拒绝的详细理由。如果想说明则在主体返回
404
无法找到请求的资源
5XX
服务器本身发生了错误
500
表示服务器在执行请求的时候发生了错误
503
服务器超负载了处理停机维护状态
HTTP报文
报文首部 一客户端和服务器处理是的请求或者响应的内容以及属性报文主体 -应该被发送的数据
请求报文
客户端的HTTP报文 请求行 - 方法、URL \HTTP版本 首部字段:
请求通用实体
响应报文
服务器的HTTP报文
状态行一HTTP版本、状态码
首部字段:
响应首部字段通用首部字段实体首部字段
HTTP首部字段类型
通用首部字段-请求报文和响应报文 都会使用的首部请求首部字段 一 从客户端向服务器发送请求报文时使用的首部响应首部字段一从服务器向客户端返回响应报文使用的首部实体首部字段 —请求报文 和响应报文使用的首部
通用首部字段
Cache-Control
能操作缓存的工作机制
public 表明其他用户可以利用缓存private 只以特定的用户作为对象 public private 相反no-cache一防止从缓存中返回过期的资源缓存服务器转发给源服务器
Connection
作用:
控制不在转发给代理的首部字段 connection:不在转发的首部字段 Hop-by-hop管理持久连接 connection:close - 服务器明确的断开链接connection: Keep-Alive- 持久连接
Date
表明创建http报文的日期和时间
请求首部字段
作用: 补充一些请求的附加信息、客户端信息、对响应内容相关的优先级等
Accept
能够处理的媒体类型以及媒体类型的优先级
Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.7文本文件 text/html - HTML格式 text/plain-纯文本格式text/css -css格式组合application/xhtmlxml,application/xml,application/json ,application/pdf 图片文件 image/jpeg - jpeg 格式,image/webp,image/apng image/png,image/gif 视频 video/mpeg,video/quicktime 应用程序中使用的二进制文件 application/octet-stream, application/zip,application/x-www-form-urlencoded
q0.9 权重 范围0~1可以精确到小数点后3位 1为最大值、默认为1.0
accept—期望提供给服务端的一些参考意见
Accept-Charset
期望支持的字符集优先级
Accept-Charset
期望支持的字符集 优先级 http Accept-Charset: charset utf-8
Accept-Encoding
期望支持的内容编码被压缩的 包装 好处:减少网络流程提升我们的性能
gzipcompressdeflate -bridentity - 不执行压缩或者不会发生变化的默认编码格式
注: 我们在要求服务器按照某种方式返回但是这不是强制。如果说服务器不支持或者不开启那么不起作用 如果服务器支持压缩或者开启响应报文的Content-Encoding 告知
Accept-Language
期望能够处理的语言集 zh-CN,zh;q0.9,en;q0.8
Host
Host: www.baidu.com 请求资源所处的互联网主机名和端口号 唯一一个必须要包含在请求内的首部字段 相同的IP地址下部署了多个域名那么服务器就无法知道哪一个域名对应的请求。
If-Match
像If-xxx 条件请求。服务器接收到附带的条件的请求后只有判断指定条件为真才会执行请求 If-Match: “12345” 两端资源进行比较只有判断条件为真才会接收请求
If-Modified-Since
如果服务器If-Modified-Since 早于资源的更新时间希望能处理请求 不满足条件的话服务器返回304代码
If-None-Match
实体标记(ETag) 值和请求资源的ETag的值不一致的时候告诉服务器处理请求
Referer
告诉服务器请求的原始资源的地址
User-Agent
客户端的信息传给服务器了 内容包含:操作系统/版本 、浏览器/版本、设备信息(移动端)/版本
响应首部字段
用于补充响应的附加信息、服务器信息、对客户端的附加要求
Accept-Ranges
告诉客户端我服务器是否可以接受范围请求是bytes否none
Age
资源在代理缓存中存在的时间
Location
客户端重定向的URL
Server
服务器的名字:Apache Nginx BWS gws
实体首部字段
Allow
资源的正确请求方式:GET HEAD POST 服务器接收到了不支持的HTTP方法会以状态码405
Content-Encoding
gzipcompressdeflatebr
Content-Language
告诉客户端用的哪一种语言
Content-Type
说明了实体主题内对象的媒体类型 text/html charsetutf-8
Expires
资源失效的日期
缓存服务器 如果接收到了这个字段会以缓存来应答如果在这个时间之前响应的副本会一直保存 如果超过了这个时间会转发给服务器
如果源服务器不希望缓存服务器对资源进行缓存那么这个时间设置为Date相同的时间即可。
Last-Modified
指明资源在最后修改的时间
跨域-cors
Cors 跨域资源共享 同源策略端口、域名、协议
跨域构成条件:
端口不同协议不同域名不同 三个只要一个不同就是不同源。只要不同源就是跨域
两种请求
简单请求
两个条件:
请求方法是:HEAD,GET,POSTheader中只能包含以下请求字段:AcceptAccept-LanguageContent-LanguageContent-Typetext/plainmultipart/form-dataapplication/x-www-form-urlencoded
浏览器不同的处理方式
简单请求跨域浏览器会让请求发出
GET /cors HTTP/1.1
Origin: http://www.baidu.com
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0 ...响应头会加Access-Control-Allow-Origin表示对该来源的请求是允许的
Access-Control-Allow-Origin: http://www.baidu.com
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: FooBar
Content-Type:text/html; charsetutf-8
Access-Control-Allow-Origin是必须的 要么是请求时Origin的值。 那么就是 * 表示接受任意域名的请求但是存在安全隐患 如果没有这个头部信息说明了服务器没有开启资源共享浏览器会认为这次请求失败Access-Control-Allow-Credentials是可选的 表示允许发送Cookie true: 表示服务器明确许可可以在请求中一起发送 如果不要浏览器发送cookie那么删掉
非简单请求
只要不是简单请求那就是非简单请求
先发送OPTIONS 预检请求 OPTIONS请求按照简单请求的方式处理 目的: 保护客户端的安全防止不受信任的网站利用用户的浏览器向其他网站发送恶意请求
Access-Control-Request-Method:告诉服务器实际发送的HTTP请求方法Access-Control-Request-Header:告诉服务器实际请求所携带的自定义的头部信息
OPTIONS /resources/post-here/ HTTP/1.1
Host: bar.other
Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8
Accept-Language: en-us,en;q0.5
Accept-Encoding:gzip,deflate
Accept-Charset:IS0-8859-1,utf-8;q0.7,*;q0.7
Connection: keep-alive
Origin: http://www.baidu.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers:X-PINGOTHER,Content-Type服务器根据这些信息决定该请求是否被允许 响应的
Access-Control-Allow-Methods:POST
Access-Control-Allow-Headers:X-PINGOTHER,Content-Type什么时候触发OPTIONS请求?
跨域的时候Access-Control-Request-Headers: X-PINGOTHER,Content-Type发送跨域的时候使用PUT、DELETET、CONNECT、OPTIONS、TRACE、PATCH