• HTTP协议


    在http协议使用场景上我们最熟悉的可能就是浏览器了,作为本系列第一篇,就讲一个问题  ”浏览器怎么连接上服务器并获取网页内容的“ ;

    首先 浏览器怎么连接上服务器的?

    如果对OSI七层模型或者TCP/IP四层模型不熟悉可能会对接下来的内容有点懵,不着急,看这里:

    互联网是怎么通讯的

    假设你已经看过我写的那篇文章了,接下来就听我徐徐道来;

    浏览器(以下称 B)要获取服务器(以下称 S)的内容(网页),两者必须通过互联网建立起连接,建立连接的必要要知道双方的 ip地址;

    B是怎么获取到 S的ip地址的呢?  就是用户输入的域名,浏览器通过域名解析到ip地址;

    至于两者怎么建立连接的,看过我那篇文章也就知道了,这就不说了;

    建立连接后,S会把B的请求交给本地绑定80端口(也可能是其他端口)的程序(比如这里就是Apache)来处理这个请求;

    既然你B要获取S上的一个页面,你在发送请求的时候就应该告诉S,然后S返回给你数据的时候也应该附带一些信息,比如页面有多大,浏览器才知道接下来怎么处理;

    那么想一下,B方想带什么数据就带什么数据,S方返回的数据也是按心情的,就会出现你发送的数据对方不认识,所以双方就需要一个约定一个协议,http协议就诞生了;

    现在无论是B方还是S方发送数据都必须遵守一个格式,这样双方就可以愉快的沟通了;

    在浏览器中打开博客园,抓一下请求信息来看一下有些啥;

     先别兴奋,这个地方看到的都是请求头信息,并不是一个完整的HTTP请求,看看一个完整的请求长什么样;

    1 POST /path/page.php  HTTP/1.1
    2 Host: www.xxxxx.com
    3 Content-Type:application/x-www/form-urlencoded
    4 Content-length:17
    5 
    6 username=zhangsan

    请求头包含三个部分,请求行。请求头信息。请求主题信息;

    看上面代码,第一行就是请求行,每一行以 /r/n结尾;

    请求行包含三个部分, 请求方式(GET,POST,PUT,DELETE...) ,请求路径  , 采用的协议/版本(http)

    2~4为请求头,可以包含很多,结构是 key:val

    第6行是请求主体信息,请求头和请求主体要空一行

    基础认识到这里差不多了,下一篇再来分析更多有用的头信息;

  • 相关阅读:
    cocos creator 场景如何透明,多个canvas层级显示
    c/c++导出lua绑定
    c++自动导出lua绑定
    获取Sprite上某一个点的透明度
    cocos2d-x lua中实现异步加载纹理
    keystore找回密码
    xcode 制作静态库文件(.a)
    Ajax学习笔记之一----------第一个Ajax Demo[转载]
    lua调用java java调用lua[转载]
    WPF中模板选择和DataContext的一些使用
  • 原文地址:https://www.cnblogs.com/codeAB/p/6305991.html
Copyright © 2020-2023  润新知