1.HEAD请求方法
方法与GET方法类似,也是请求从服务器获取资源,服务器的处理机制也是一样的,但服务器不会返回请求的实体数据,只会传回响应头,也就是资源的“元信息”。
HEAD方法可以看做是GET方法的一个“简化版”或者“轻量版”。因为它的响应头与GET完全相同,所以可以用在很多并不真正需要资源的场合,避免传输body数据的浪费。
例子:检查服务器是否存在某个文件。使用HEAD方法
2.
POST也是一个经常用到的请求方法,使用频率应该是仅次于GET,应用的场景也非常多,只要向服务器发
送数据,用的大多数都是POST。
可以这样理解:POST新增或提交 PUT替换或更新
3.
“安全”是指请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造成实质的修改
例如说 GET/HEAD就是安全的 PUT/POST/DELETE会对服务器资源进行操作就不是安全的
4.
幂等:执行多次相同的操作之后 结果应该是相同的。即多次”幂“之后结果相等。
显而易见 GET HEAD肯定是安全又幂等的。DELETE对于重复删除一个不存在的文件也是幂等的。
POST是新增或提交 不是幂等
PUT是替换或更新 替换或更新后就不会再变了 所以幂等。
5.
主机名可以是域名或者IP地址形式的 必须要有。
但是端口号不一定需要。可以根据协议来确定默认的端口号进行确认:
(1,HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口)
(2,HTTPS(securely transferring web pages)服务器,默认端口号为443/tcp 443/udp
(3,HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098
(4,SOCKS代理协议服务器常用端口号:1080
(5,FTP(文件传输)协议代理服务器常用端口号:21
(6,Telnet(远程登录)协议代理服务器常用端口号:23
查询参数从一个 ? 开始 是一个个的Key-Value值。
6.
如果在path或者query里面出现了”&@?“等限定字符怎么办
直接把非ASCII码或特殊字符转换成十六进制字节值,然后前面再加上一个“%” 比如说 空格 就是”%20“
那么中文、日文等汉字通常先使用UTF-8进行编码然后进行上面所说的进行转义 银河”会被转义成“%E9%93%B6%E6%B2%B3”。
7.
状态码分析;
1xx:表示到达协议中间状态,需要后续操作
2xx:成功,报文被接受和正确处理
200 OK一切正常。
204 Not content 也是成功 但是返回的响应报文没有body数据
206 Partial Content 在HTTP分块下载时用到,body部分是资源的一部分。
3xx:重定向,资源位置发生变化,需要重新发送报文
301 永久重定向
302 临时重定向
304 Not modified 重定向到缓存页面
4xx:客户端错误,请求报文有问题,服务器无法处理
400 Bad Request 客户端错误通用码
403 Frorbidden 服务器禁止访问
404 Not found 服务器没找到资源
405 Method Not Allowed:不允许使用某些方法操作资源,例如不允许POST只能GET;
406 Not Acceptable:资源无法满足客户端请求的条件,例如请求中文但只有英文;
408 Request Timeout:请求超时,服务器等待了过长的时间;
409 Conflict:多个请求发生了冲突,可以理解为多线程并发时的竞态;
413 Request Entity Too Large:请求报文里的body太大;
414 Request-URI Too Long:请求行里的URI太大;
429 Too Many Requests:客户端发送了太多的请求,通常是由于服务器的限连策略;
431 Request Header Fields Too Large:请求头某个字段或总体太大;
5xx:服务器错误,服务器处理请求时内部发生错误
500 Internal server error 服务器错误通用码
501 Not implmented 还没开放
502 Bad Gateway 服务器作为网关返回的错误码
503 Service Unavilable 服务器目前忙 访问不到
8.HTTP的特点
灵活可扩展
可靠传输(背靠TCP/IP)
应用层协议
请求应答
无状态
9.请求——应答模式导致了HTTP的队头阻塞
对头阻塞:
由于HTTP是 一放一接 的模式,不等不形成一个串行队列,必须前面的请求应答完 才能处理后面的请求
10.
MIME type表示body的数据类型 用type/subtype表示
Encoding type是表示以何种压缩方法进行压缩的
11.
针对于上面2种type 在响应头字段和请求头字段有accept和content字段
accept请求头字段:表示希望接受什么类型数据
content响应头字段:表示实际发送了什么类型数据
12.
语言类型的分隔符是-
比如说 en-US en-GB zh-CN等等
13.
Accept-Languange可接受的语言类型
Content-Language实际发送的语言类型
Accept-Charset可接受的字符集(GBK ,UTF-8)
Content-Charset实际发送使用的字符集
14.
内容协商(优先级)
15.
16.
传送大文件的方式:用压缩算法(gzip等)、分块传输
Transfer-Encoding:chunked(块)
这个字段和content-length不能同时出现 因为无法计算长度
17、
短链接 由于需要大量重复的TCP握手挥手过程,所以效率低下
长连接 由字段Connection:Keep-alive保持tcp的链接 在HTPP/1.1后默认启动长连接
由于大量长连接会导致服务器资源枯竭,所以Nginx有两个机制:
keepalive_timeout一个链接的最长链接时间 过时则断开
keepalive_requests一个链接的最多需求,比如请求超过100次 断开连接
18.
对头阻塞的解决办法:
并发连接,对一个域名同时并发多个连接
域名分片
19.
301永久重定向
302临时重定向
在响应报文中如果由Location字段 则会浏览器自动跳转到location字段后面的url
url可以是绝对路径的 也可以是相对的
分析腾讯的网页跳转
使用重定向时的注意事项:
注意不要出现 循环跳转A->B->A
每次跳转都需要一个应答 浪费性能
20.
cookie是请求报文里的
set-cookie是响应报文里的
可以在set-cookie加入cookie的过期时间
expires 过期时间 绝对的时间点
max-age 最大相对时间过去 是相对的 响应时刻+最大时间
domain 域名 可以在输入的url判断是否发送cookie
path 路径
属性httponly 只允许通过http协议访问cookie
属性secure 只允许https访问