• 关于HTTP协议


     在网络协议的最上层即应用层,http协议是一个很重要的协议,是客户端和服务端通信的重要协议之一。在请求的时候,常用的是get和post方法去发送Request。

      之前对于get和post的区别不是很清楚,在查阅一些资料后,发现:

    get和post传输方式区别在于:
     1)get传输时把参数带到了地址栏不安全post传输地址栏不显示传输参数安全性高;
    2)get适合传输小部分数据(不能大于2KB),而post可传输大量数据(一般被默认为不受限制);
    3)get方式,服务器端用Request.QueryString获取变量的值,post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得;
    4)get传输参数时以'?'号代表URL地址的结尾与数据参数的开端,后面的参数每一个数据参数以“名称=值”的形式出现,参数与参数之间利用一个连接符&来区分。post传输数据是放在HTTP主体中的,其组织方式不只一种,有&连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。

    HTTP 1.0/1.1用区别在于连接的持续性。HTTP/1.0协议使用非持久连接,

    HTTP/1.1协议的客户机和服务器可以配置成使用非持久连接.在持久连接下,不必为每个Web对象的传送建立一个新的连接,一个连接中可以传输多个对象!代表URL地址的结尾与数据参数的开端,后面的参数每一个数据参数以“名称=值”的形式出现,参数与参数之间利用一个连接符&来区分。

    下面说说http协议中的报文头和报文体:

    当用户通过浏览器(客户端)向服务端发送一个get请求时:(如下)

    请求报文头文件:

    GET /***.aspx HTTP/1.1

    Referer: 被链接的文档的URL

    Accept-Language: zh-CN

    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)

    Accept-Encoding: gzip, deflate

    Host: 客户机的主机和端口号

    Connection: Keep-Alive

    简单解释:

    GET /***.aspx HTTP/1.1:请求的方法字段、URL字段、HTTP请求版本字段;方法可以是:GET、POST、HEAD等;

    Accept:客户机可以接受的媒体格式

    Referer:被链接的文档的URL

    Accept-Language:客户机能够接受的语言

    User-Agent:向服务器发送请求的浏览器类型(在IIS日志里面cs(User-Agent)这个参数可以看到相关访问类

    型,例如百度蜘蛛,Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html))

    Accept-Encoding:客户机能够处理的编码方式

    Host:客户机的主机和端口号

    Connection:连接关闭或者保持连接

    响应报文头文件:

    HTTP/1.1 200 OK

    Server: ASP.NET Development Server/10.0.0.0

    Date: Sat, 14 May 2011 06:43:17 GMT

    X-AspNet-Version: 4.0.30319

    Cache-Control: private

    Content-Type: text/html; charset=utf-8

    Content-Length: 812

    这里的Content-Length为报文头的内容,表示了报文体的大小为812字节.

    而在响应返回的时候,不是任何情况下都是实时返回的,比如:一个需要处理一小时的数据,用户则需要在前端等待1小时之久,显然是不行的.还有就是不确定返回报文体的大小的时候,这时,就涉及到了chunked response,即chunked编码.这时,就用到了它.Transfer-Encoding域的值应当为chunked.

    而在cowboy中,对这里有相应的处理,待续。。。。。。

  • 相关阅读:
    .net com
    Json树递归Js查询Json父子节点
    Angular中使用$watch监听object属性值的变化
    教程
    JS格式化Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)
    js中获取时间new Date()详细介绍
    select默认空白问题。。
    angular先加载页面再执行事件,特别在动态生成id,然后做echarts等图表
    详解angularJs中自定义directive的数据交互
    Angularjs ng-table的使用(可以加button)以及angularjs学习资料
  • 原文地址:https://www.cnblogs.com/unqiang/p/3080255.html
Copyright © 2020-2023  润新知