zoukankan      html  css  js  c++  java
  • http请求的概念

    我曾多次阅读http协议,但是理解依然不深,在此,再次阅读,再次理解。加深两点:解析头部信息 ,分解头部和主体用 。之所以一次请求会看到网络里有很多请求,是因为浏览器代替访问了多次!程序只管处理一次即可!

    HTTP请求

    步骤1:浏览器首先向服务器发送HTTP请求,请求包括:

    方法:GET还是POST,GET仅请求资源,POST会附带用户数据;

    路径:/html/path;

    域名:由Host头指定:Host: www.sina.com.cn

    以及其他相关的Header;

    如果是POST,那么请求还包括一个Body,包含用户数据。

    步骤2:服务器向浏览器返回HTTP响应,响应包括:

    响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器端处理时发生了错误;

    (响应代码详细说明:请求响应的状态码

    1xx:信息类,表示收到web浏览器请求,正在进一步的处理中

    2xx:成功,表示用户请求被正确接收,理解和处理。如200 OK

    3xx:重定向,表示请求没有成功,客户必须采取进一步的操作

    4xx:客户端错误,表示客户端提交的请求有错误,例如,404 not found,意味着请求中所引用的文档不存在

    5xx:服务器错误,表示服务器不能完成对请求的处理,如500

    下表显示每个响应码及其含义:

    100 继续101 分组交换协

    200 OK  201 被创建 202 被采纳 203 非授权信息 204 无内容 205 重置内容 206 部分内容

    300 多选项 301 永久地传送  302 找到3 03 参见其他 304 未改动 305 使用代理 307 暂时重定向

    400 错误请求 401 未授权 402 要求付费 403 禁止 404 未找到 405 不允许的方法 406 不被采纳 407 要求代理授权 408 请求超时 409  冲突 410 过期的 411 要求的长度 412 前提不成立 413 请求实例太大 414 请求URI太大 415 不支持的媒体类型416 无法满足的请求范围 417 失败的预期

    500 内部服务器错误501 未被使用502 网关错误503 不可用的服务504 网关超时505 HTTP版本未被支持

    响应类型:由Content-Type指定;

    以及其他相关的Header;

    通常服务器的HTTP响应会携带内容,也就是有一个Body,包含响应的内容,网页的HTML源码就在Body中。

    步骤3:如果浏览器还需要继续向服务器请求其他资源,比如图片,就再次发出HTTP请求,重复步骤1、2。

    Web采用的HTTP协议采用了非常简单的请求-响应模式,从而大大简化了开发。当我们编写一个页面时,我们只需要在HTTP请求中把HTML发送出去,不需要考虑如何附带图片、视频等,浏览器如果需要请求图片和视频,它会发送另一个HTTP请求,因此,一个HTTP请求只处理一个资源。

    HTTP协议同时具备极强的扩展性,虽然浏览器请求的是http://www.sina.com.cn/的首页,但是新浪在HTML中可以链入其他服务器的资源,比如<img src="http://i1.sinaimg.cn/home/2015/1008/U8455PxDT20131008135420.png">,从而将请求压力分散到各个服务器上,并且,一个站点可以链接到其他站点,无数个站点互相链接起来,就形成了World Wide Web,简称WWW。

    HTTP格式

    每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的。

    HTTP协议是一种文本协议,所以,它的格式也非常简单。HTTP GET请求的格式:

    GET /path HTTP/1.1
    Header1: Value1
    Header2: Value2
    

    每个Header一行一个,换行符是

    HTTP POST请求的格式:

    POST /path HTTP/1.1
    Header1: Value1
    Header2: Value2
    
    body data goes here...
    

    当遇到连续两个 时,Header部分结束,后面的数据全部是Body。

    HTTP响应的格式:

    200 OK
    Header1: Value1
    Header2: Value2
    body data goes here...

    HTTP响应如果包含body,也是通过 来分隔的。请再次注意,Body的数据类型由Content-Type头来确定,如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

    当存在Content-Encoding时,Body数据是被压缩的,最常见的压缩方式是gzip,所以,看到Content-Encoding: gzip时,需要将Body数据先解压缩,才能得到真正的数据。压缩的目的在于减少Body的大小,加快网络传输。

    GET 请求与POST请求的区别

    1.GET

    一般用于信息获取;使用URL传递参数;对所发送的信息的数量也有限制,一般在2000个字符

    2.POST

    一般用于修改服务器上的资源;对所发送的信息的数量没有限制

    ajax--http知识点链接

  • 相关阅读:
    利用vbs设置Java环境变量
    svg translate 操作
    JSTL详解(二)
    [Oracle]
    怎样搭建轻量级架构-设计原则
    数据结构--队列
    opencv中各种矩阵乘的差别
    多重背包
    Linux管理员必须知道的sudo命令
    大二上學期學習生活總結
  • 原文地址:https://www.cnblogs.com/lanyueff/p/6232014.html
Copyright © 2011-2022 走看看