HTTP

HTTP

HTTP请求与响应

HTTP请求request包括:请求行,请求头,空行,请求主体

  • 请求行:请求方法(e.g., GET or POST),URL,协议版本(e.g., HTTP/1.1):get /index HTTP/1.1
  • 请求头:key:value格式;
  • 空行:表示开始消息主体,即使请求头为空也要保留空行
1
2
3
4
5
6
7
POST /user HTTP/1.1      //请求行
Host: www.user.com
Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
User-agent: Mozilla/5.0. //以上是首部行
(此处必须有一空行) //空行分割header和请求内容
name=world 请求体

HTTP响应response包括:响应行,响应头,空行,响应主体

  • 响应行包括:协议版本,状态码,状态码描述
1
2
3
4
HTTP/1.1 304 Not Modified
Date:Sat, 15 Oct 2011 15:39:29
(空行)
(空响应体)

常用请求方法GET和POST的区别

  • GET将请求信息放在URL,POST放在报文体中(安全问题)
  • GET可以被缓存、被存储,POST不行
  • GET有URL最大长度限制,POST没有长度限制

HTTP常用状态码

状态码 类别 含义
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
200 OK
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
301 永久重定向
302 临时重定向
response.setStatus(302);
respooen.setHeader(“location”,”/project/loc2”);
和response.sendRedirect(“/project/loc2”);是等价的;
定时刷新respooen.setHeader(“refresh”,”秒数;url=跳转的路径”);
304 Not Modified
4XX Client Error(客户端错误状态码) 服务器无法处理请求
400 请求报文中存在语法错误 Bad Request
401 用户认证失败/无认证信息 Unauthorized
403 请求被拒绝 Forbidden
404 Not Found
5XX Server Error(服务器错误状态码) 服务器处理请求出错
500 服务器内部错误 Internal Server Error
503 服务器无法处理请求 Service Unavailable

Cookie和Session的区别

  • Cookie
    • 是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
    • 客户端再次请求的时候,会把Cookie回发给服务器
    • 服务器接收到后,会解析Cookie生成与客户端相对应的内容
    • 只能存储ASCII码
  • Session
    • 服务器端机制,在服务器上保存的信息,服务器负担比较高
    • 解析客户端请求并操作session id,按需保存状态信息
    • 可存取任何类型的数据

HTTP和HTTPS的区别

  • HTTPS需要到CA申请证书,HTTP不需要
  • HTTPS密文传输,HTTP明文传输
  • 连接方式不同,HTTPS默认443端口,HTTP80端口
  • HTTPS = HTTP + 加密 + 认证 + 完整性保护,较HTTP安全

HTTPS建立连接流程

  • 浏览器将支持的加密算法信息发送给服务器
  • 服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器
  • 浏览器验证证书合法性,并生成随机密码,结合证书公钥加密信息发送给服务器(握手)
  • 服务器使用私钥解密信息确定密码,验证哈希,加密响应信息回发浏览器
  • 浏览器解密响应消息,并对消息进行验真,之后使用浏览器生成的随机密码进行对称加密交互数据
Ty.Wings wechat
欢迎您订阅我的公众号,并在GitHub上为我Star!