http request

1.request line
GET /dir/1.html HTTP/1.1
请求方法 资源位置 协议版本
2.HTTP HEADERS
通用header 请求header 实体 header
3.Content

request method
HTTP/1.1规范中的8个请求方法
1.GET url长度有限制
2.POST
3.HEAD
4.PUT //201
5.DELETE
6.TRACE
7.OPTIONS
8.CONNECT

request headers
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
参数为 Content Type
q指定优先级[0-1],为不接受,默认为1
如果不指定/,则其他类型优先级为0
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Authorization:
Basic
%%%%%%%%%%%%%%%%%

401 Unauthorized
Cookie:
version=1;skin=new;
Cache-Control:
max-age=0
Host:
www.xingdong365.com
If-Match:
"aetaghdsfsdaf"
If-Modified-Since:
Sun,11 May 2018 08:30:44 GMT
If-None-Match:
"aetaghdsfsdaf"
If-Range:
"aetaghdsfsdaf"
If-Unmodified-Since:
Sun,11 May 2018 08:30:44 GMT
Referer:
http://xingdong365.com
Range:
bytes=0-499,1000-
Upgrade:
HTTP/2.0
Via:
192.168.0.26,example.com
X-Requested-With: //是否是ajax请求

XMLHttpRequest
X-Forwarded-For: //代理服务器转发
client1,proxy1,192.168.0.128

http response

1.Status line
HTTP/1.1 200 OK
100-199:参考信息
200-299:成功
300-399:重定向
400-499:客户端错误
500-599:服务器错误

200 OK 一切ok
GET /index.html HTTP/1.1
201 Created 已创建 通常伴随 Location Header 返回
PUT /a-new-doc.html HTTP/1.1
206 Partial Content 片段内容
GET /large.zip HTTP/1.1
Range:bytes0-500
301 Moved Permanently 永久重定向 已永久移动到其他位置,配合location使用
seo适用,无结尾/请求目录时也会自动产生此响应
GET /beauty HTTP/1.1
302 Found 找到了 临时跳转
按HTTP规范,客户端此时应使用和导致产生此响应的请求方法 同样的方法再次请求Location指定位置的资源
在实践中,绝大多数浏览器都一律使用get请求location中指定的资源
304 Not Modified 未修改,无变动(用缓存中的)
Date:..........
ETag:"........"
GET /beauty HTTP/1.1
If-None-Match:"......."
If-Modified-Since:............
400 Bad Request 请求错误 打开的方式不对
401 Unauthorized 未被授权 浏览器收到此响应弹出一个输入用户名 密码的对话框
403 Forbidden 禁止访问
404 not found
405 Method not Allowed
访问方法不对 服务器禁止以所请求的方法访问,同时一般会通过allow告知允许的方法
Allow:GET,POST
406 Not Acceptable 无法接受
当请求中的accept系列header中列出的条件无法满足时,会产生此响应
GET / HTTP/1.1
Accept:application/json
408 Request timeout 请求超时 服务器一直没遇到 connection:close 会产生此响应并关闭连接
500 Internal Server Error 服务器错误
502 Bad Gateway 网关错误 代理服务器从上游服务器收到一个无效响应时,会给客户端返回此响应
503 service Unavailable 服务暂时不可用

504 Gateway Timeout 网关超时。代理服务器无法在限定时间内从上游服务器收到一个响应

2.HTTP headers
通用header 响应header 实体header
ETag:"aetaghdsfsdaf"
Location:http://xingdong365.com
Refresh:3;url=http://xingdong365.com
Set-Cookie:........
Vary:Accept-Language,User-Agent
3.Content

....

http性能优化 performance
缓存
cache-control If-Modified-Since ETag
cache-control 缓存策略
max-age=600,no-cache="Set-Cookie"
no-cache="xxx" 缓存,但在发回客户端先做检查,传值则表示不缓存指定的header
no-store 不缓存任何内容,在ie中=no-cache
max-age=120 缓存最大有效期,单位秒(age response header)
max-stale=600 在缓存过期后还可以继续保存600秒,不赋值则表示可一直有效
no-transform 禁止缓存代理修改内容
only-if-cached 禁止缓存代理访问应用服务器,仅在有缓存时返回内容
public 任何客户端(代理服务器或浏览器)均可缓存
private 仅限私有客户端(一般是浏览器)可缓存内容
must-revalidate 必须重新验证缓存有效性(默认行为),此指令目的在于显示指明
proxy-revalidate 代理服务器需要重新验证缓存有效期,浏览器不需要
s-maxage 指定public 客户端上的maxage,private可忽略

第一次请求:服务器响应
Last-Modified : 时间A
第二次请求,附加header,检查是否从上次修改时间点后有过新的修改
If-Modified-Since:时间A
ETag:If-None-Match
Vary:Accept-Encoding
告知缓存代理服务器,客户端请求中发送了不同的Accept-Encoding就要缓存不同的版本