【网络协议笔记】第五层:应用层(Application)HTTP协议简介(4)

Page content

这一篇整理了应用层的 HTTP协议的状态码和form表单。

1.状态码(Status Code)

状态码是在RFC_2616,section-10:Status Code Definitions规范中定义的。
状态码指示HTTP请求是否已成功完成。

1.1 状态码分类

状态码分为5类:

  • 信息响应:100~199
  • 成功响应:200~299
  • 重定向:300~399
  • 客户端错误:400~499
  • 服务器错误:500~599

1.2 常见状态码

100(Continue)

请求的初始化部分已经被服务器收到,并且没有被服务器拒绝。
客户端应该继续发送剩余的请求,如果请求已经完成,就忽略这个响应。

应用场景:允许客户端发送带请求体的请求前,判断服务器是否愿意接收请求(服务器通过请求头判断)。
在某些情况下,如果服务器在不看请求体就拒绝请求时,客户端就发送请求体是不恰当的或低效的。

200(OK)

请求成功

302(Found)

请求的资源被暂时的移动到了由Location头部指定的URL上。

304(Not Modified)

说明无需再次传输请求的内容(也就是说客户端可以使用之前302缓存的内容,服务器只返回响应头)。

400(Bad Request)

由于语法无效,服务器无法理解该请求。

401(Unauthorized)

由于缺乏目标资源要求的身份验证凭证。

403(Forbidden)

服务端有能力处理该请求,但是拒绝授权访问。

404(Not Found)

服务器端无法找到所请求的资源。

405(Method Not Allowed)

服务器禁止了使用当前HTTP方法的请求(比如应该使用POST请求而客户端使用的是GET请求)。

406(Not Acceptable)

服务器端无法提供与Accept-Charset以及Accept-Language指定的值相匹配的响应。

408(Request Timeout)

服务器想要将没有在使用的连接关闭(一些服务器会在空闲连接上发送此信息,即便在客户端没有发送任何请求的情况下)。

500(Internal Server Error)

所请求的服务器遇到意外的情况并阻止其执行请求。

501(Not Implemented)

请求的方法不被服务器支持,因此无法被处理。
服务器必须支持的方法(即不会返回这个状态码的方法)只有GET和HEAD。
注意和405的区分:405代表服务器支持该请求方法,只是客户端使用了错误的请求方法;而501是服务器不支持该请求方法。

502(Bad Gateway)

作为网关或代理角色的服务器,从上游服务器(如tomcat)中接收到的响应是无效的。

503(Service Unavailable)

服务器尚未处于可以接受请求的状态。通常造成这种情况的原因是由于服务器停机维护或者已超载。

2.form(表单)提交

常用属性:

  • action:请求的URI
  • method:请求方法(只支持GET和POST)
  • enctype:POST请求时,请求体的编码方式
    • application/x-www-form-urlencoded,默认值。用&分割参数,用=分割键和值,字符用URL编码方式进行编码
    • multipart/form-data:文件上传时必须使用这种编码方式

multipart/form-data参考RFC_1521

请求头

Content-Type: multipart/form-data; boundary=xxx

请求体

multipart-body := preamble 1*encapsulation
               close-delimiter epilogue

encapsulation := delimiter body-part CRLF

delimiter := "--" boundary CRLF ; taken from Content-Type field.
                                ; There must be no space
                                ; between "--" and boundary.

close-delimiter := "--" boundary "--" CRLF ; Again, no space
   by "--",

preamble := discard-text   ;  to  be  ignored upon receipt.

epilogue := discard-text   ;  to  be  ignored upon receipt.

欢迎大家的意见和交流

email: li_mingxie@163.com