HTTP协议响应码
1XX:信息响应类,表示接收到请求并且继续处理
2XX:处理成功响应类,表示动作被成功接受、理解和接受
200 OK:表示从客户端发来的请求在服务器端被正常处理了
204 No Content:该响应码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。
206 Partial Content:该响应码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含有Content-Range指定范围的实体内容。
3XX:重定向响应类,为了完成指定的动作,必须接受进一步处理
301 Moved Permanently:永久性重定向。该响应码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。
302 Found:临时性重定向。该响应码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。
303 See Other:该响应码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
304 Not Modified:该响应码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304 Not Modified(服务器端资源未改变,可直接使用客户端未过期的缓存)。304响应码返回时,不包含任何响应的主体部分。304虽然被划分在3XX类别中,但是和重定向没有关系。
307 Temporary Redirect:临时重定向。该响应码与302 Found有着相同的含义。尽管302标准禁止POST变换成GET,但实际使用时大家并不遵守。307会遵守浏览器标准,不会从POST变成GET。但是,对于处理响应时的行为,每种浏览器有可能出现不同的情况。
4XX:客户端错误,客户请求包含语法错误或者不能正确执行
400 Bad Request:该响应码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像200 OK一样对待该响应码。
401 Unauthorized:该响应码表示发送的请求需要有通过HTTP认证(BASIC认证。DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。
403 Forbidden:该响应码表明对请求资源的访问被服务器拒绝了。服务器没有必要给出拒绝的详细理由,但如果想作说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到了。未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源IP地址视图访问)等列举的情况都可能是发生403的原因。
404 Not Found:该响应码表示服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由是使用。
5XX:服务端错误,服务器不能正确执行一个正确的请求
500 Internal Server Error:该响应码表明服务器端在执行请求时发生了错误。也可能是Web应用存在的bug或某些临时的故障。
503 Server Unavailable:该响应码表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入Retry-After首部字段再返回给客户端。
Get请求和Post请求比较
接下来看看两种请求方式的区别:
1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
2、传输数据的大小
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。
3、安全性
POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击
4、HTTP中的GET,POST,SOAP协议都是在HTTP上运行的