HTTP是一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应.请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式.这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当.
特点
- 多种模式:支持客户端/服务器模式.
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径.由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快.
- 方便灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记.
- 无连接:无连接的含义是限制每次链接只处理一个请求.服务器处理完客户的请求,并收到客户的应答后,即断开链接,采用这种方式可以节省时间.
- 无状态:HTTP协议是无状态协议.无状态是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能会导致每次连接传送的数据量增大.另一方面,在服务器不需要先前信息时它的应答就比较快.
常见状态码
信息.
2XX
成功.
代码 名称 说明 200 OK 请求成功(其后是对GET和POST请求的应答文档) 204 No Content 没有新文档.浏览器应该继续显示原来的文档.如果用户定期地刷新页面,而Servlet可以确定用户文档足够新 206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它 3XX
重定向.
代码 名称 说明 301 Moved Permanently 所请求的页面已经转移至新的url 302 Found 所请求的页面已经临时转移至新的url 303 See Other 所请求的页面可在别的url下被找到 304 Not Modified 未按预期修改文档.客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档).服务器告诉客户,原来缓冲的文档还可以继续使用 307 Temporary Redirect 被请求的页面已经临时移至新的url 4XX
客户端错误.
代码 名称 说明 400 Bad Request 服务器未能理解请求 401 Unauthorized 被请求的页面需要用户名和密码 403 Forbidden 对被请求页面的访问被禁止 404 Not Found 服务器无法找到被请求的页面 5XX
服务端错误.
代码 名称 说明 500 Internal Server Error 请求未完成.服务器遇到不可预知的情况 502 Bad Gateway 请求未完成.服务器从上游服务器收到一个无效的响应 503 Service Unavailable 请求未完成.服务器临时过载或宕机 504 Gateway Timeout 网关超时 505 HTTP Version Not Supported 服务器不支持请求中指明的HTTP协议版本