HTTP请求方法:
常见的5种请求方法:
GET:请求指定的页面信息并返回实体主体
HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于捕获报头
POST:向指定资源提交数据进行处理请求,数据包含在请求体中。POST请求可能会导致新的资源的建立与对已有资源的修改
PUT:从客户端向服务器传送的数据取代指定文档的内容
DELETE:请求服务器删除指定的页面
GET和POST方法的区别:
(1)GET提交的数据会放在URL之后,以问号(?)分割URL和传输数据,参数之间以&相连;POST方法是把提交的数据放在HTTP包的Body中
(2)GET提交的数据大小有限制,而POST方法提交的数据大小没有限制
(3)GET方式需要使用Request.QueryString来取得变量的值,而POST方法通过Request.Form来获取变量的值
(4)GET方式提交数据会带来安全问题,比如一个登录页面通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。
HTTP状态码:
分类:
1XX(100~101):信息提示,表示请求已被成功接收,继续处理
2XX(200~206):成功,表示请求已被成功接收、理解、处理
3XX(300~305):重定向,要完成要求,需进行下一步处理
4XX(400~415):客户端错误,请求有语法错误或无法实现
5XX(500~505):服务器错误,服务器未能实现合法的请求
常见状态码:
200:OK,服务器成功处理请求
301/302:重定向,请求的URL被移走
304:未修改,客户的缓存资源是最新的,需要客户端使用缓存
404:未找到资源
401:禁止访问
501:服务器遇到一个错误,使其无法对请求提供服务
204:
返回的HTTP响应中只有一些header和一个状态行,没有实体的主题内容(没有响应body)
作用:
在不获取资源的情况下了解资源的情况
通过查看HTTP响应中的状态码看某个对象是否存在
通过查看header测试资源是否被修改
206:
206状态码表示已经处理了部分的GET请求(有发送GET方法的HTTP请求,web服务器才会返回206)
应用场景:
迅雷、HTTP下载工具都使用206状态码实现断点续传
将大文档分为多个下载段同时下载,如在线看视频可以边看边下载
301:
服务器返回301时表示请求的网页已经永久性转移到了另一个地址
应用场景:
网站更换域名
302:
当访问一个URL时,服务器要我们访问另外一个资源,这时浏览器会继续发送一个HTTP,请求访问新的资源
301与302的区别:
301表示旧地址的资源已经被永久地移除了,资源已经无法再访问,搜索引擎会把权重算到新的地址
302表示旧地址还在,仍然可以访问,重定向只是临时地从旧地址跳转到新地址,搜索引擎会把权重算到旧地址上
304:
代表上次的文档已经被缓存,还能够继续使用
如果不想使用本地缓存,Crtl+F5强制刷新页面
400:
状态码40表示请求的语法错误,发送的HTTP请求中数据有错,无法被服务器所理解
应用场景:
查询快递,参数不对,服务器会返回400
401:
状态码401指未授权的错误,有些网页采用HTTP基本认证,需要在HTTP请求中带上认证首部(authorization header),否则会返回401
403:
表示Web客户端发送的请求被Web服务器拒绝了
404:
当输入一个URL,此URL的域名正确,但资源不存在,服务器会返回404,告诉浏览器资源不在了
此404页面是可以自定义的
500:
代表服务器内部错误,错误原因过多,如代码错误、数据库....
503:
表示服务器暂时不可以,此状态是临时的,并且在一段时间后会恢复