http状态码
定义:HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码
分类:
1xx:
作为临时的响应,代表请求已经被受理,服务器用来向客户端指定客户端应该有的后续动作。
2xx:请求成功,服务器已经接受并且会处理它
3xx:这类状态码代表需要客户端采取进一步的操作才能完成请求。用于重定向。后续的请求地址(重定向目标)在本次响应的 Location 域中指明。这个我在腾讯云上抓包看见过。但是自己没包装过相关的http包。
4xx:客户端出错,返回大概的可能的出错原因。
5xx:服务器出错,返回出错的原因。
6xx:源站没有返回响应头部,只返回实体内容(这句话是百度的,留个点,日后说不定能遇见这个码)
具体的http码:
http码 | 解释 |
---|---|
100 | 客户端仍应该继续发送剩余请求,所有请求完成后,服务器会给客户端最终响应 |
101 | 提醒客户端按照服务器发来的信息改变请求方式 |
200 | 请求已经成功,响应头和数据随即发出 |
201 | 服务器根据客户端的请求建立了新的文件,随即会把新文件的url发送回客户端 |
202 | 服务器正在处理请求,但是能不能处理完成,还不一定,用于异步场合 |
203 | 告诉客户端当前使用的文件是源文件的拷贝,因此应答的http头部可能会出错 |
204 | 服务器接受了请求,但是不会返回任何内容,客户端应该保持原有界面的内容 |
205 | 服务器不凡会任何内容,但是可以让去掉视图,相当于去掉原来的内容,等用户新一次的输入 |
206 | 服务器处理了一部分GET请求 |
300 | 被请求的资源在服务器中可以选择具体哪一个 |
301 | 被请求的资源已经永久被移动到了别的位置 |
302 | 资源被临时移动,url应该坚持原来的,不能更改 |
303 | 改变提取文件的方法。原来是POST,那么用GET提取文件 |
304 | 所请求的资源没有修改,那么返回这个码,并且不返回资源,因为客户端会缓存原来的文件 |
305 | 使用代理,资源通过代理访问 |
306 | 这个状态码已经不用了 |
307 | 同302 |
400 | 请求的语法不对 |
401 | 请求进行用户身份认证 |
402 | 用户在没有权限的情况下唐突访问收到密码保护的界面 |
403 | 由于权限问题,资源不可用 |
404 | 找不到指定资源 |
405 | 所用的请求方法对资源不适合 |
406 | 无法根据请求完成任务 |
407 | 用户必须要经过代理服务器授权 |
408 | 服务器在特定时间内没有收到客户端的请求 |
409 | 服务器请求资源时候发生冲突 |
410 | 文档由于已知原因不可用 |
411 | 服务器不能处理请求,除非客户发送一个Content-Length头 |
412 | 请求头中指定的前提条件失败 |
413 | 文档超过了服务器当前愿意处理的大小,但是服务器会稍后处理的 |
414 | url太长,感觉这个错误有点搞笑 |
415 | 有服务器无法处理的媒体格式 |
416 | 服务端的请求范围无效,这个原因感觉说得很模糊 |
500 | 存在服务器无法处理的意外 |
501 | 服务器不支持请求需要的功能 |
502 | 服务器不能处理请求,除非客户发送一个Content-Length头 |
503 | 服务器太忙或者在维护中 |
504 | 作为网管或者服务器,不能及时地从远程服务器获得应答 |
505 | 不支持请求的http版本 |
600 | 源站没有返回响应头部,只返回实体内容(这个我看了好多博客都没有提到600码,感觉也不是很清楚) |
终于写完了………….
下面说说我踩的坑
是这样的,在绝望之际,我还发帖子问了问别人。
http://bbs.csdn.net/topics/392207311
我当时的1.html已经删了。后来我直接scp了我腾讯云上的index.html,in.php,zhuziyu.html,还有几张图片.把相关url更改为127.0.0.1,发现http对于图片的请求包还是没有发出去。
总不能是浏览器自己的问题吧。。。还不是欺负我技术差!我就control + shift+ I 点开了控制台这个选项,发现是这样的:
错误102,net::connection::refused。
经查证是url写错了。这段是直接从腾讯云上搬下来的,只更改了ip还有对应的目录。再查再查,没有加端口!
没有加端口!
wrong写法:
http://127.0.0.1/home/zhuziyu/server/servermanage/图片.jpg
right写法:
http://127.0.0.1:20000/home/zhuziyu/server/servermanage/图片.jpg
没有加端口!
没有加端口!
没有加端口!
好了,搞定了!决定写一个简单的web服务器之后,先后验证了线程池库,进程池库,epoll库,还有测试了一个main函数用来代替日后的工作进程。自此,我对web服务器的验证全部结束。目前没有验证的是http具体的处理库。测试以来,一直让我不晓得的bug竟然是端口问题,难怪我把班长的订餐界面拿下来都是好的,html在腾讯云上也是好的,就是到了本地不行。
吃什么最长记性?亏。