• HTTP协议基本知识


    Xcode7.0以上版本必须操作:https http

    1. 在Info.plist中添加NSAppTransportSecurity类型Dictionary。
    2. 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

    HTTP协议

    1. HTTP协议

       HyperText Transfer Protocol 超文本传输协议。设计HTTP的最初目的是为了提供一种发布和接收HTML页面的方法。

       是一个客户端和服务端请求和应答的标准。客户端发送一个到服务器上指定端口(默认端口是80)的HTTP请求,服务器在指定端口上监听客户端发送过来的请求,一旦收到,则向客户端发回一个状态行和消息(即客户端请求的资源)。客户端在收到资源(超文本)后,通过某些程序(浏览器),解析数据后才能够展示。

      通过HTTP/HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers)来标识,即URI。

    格式:http://ip(地址,域名):端口/路径/index.php?参数列表,参数列表中每个参数用&符号隔开,参数都是key = value

      在浏览器的地址栏里输入的网站地址叫做URL(Uniform Resource Locator,统一资源定位符),可以理解为门牌地址。

      两者都可以确定要访问的资源在服务器上的位置。

      URL 是URI的子集。

      [扩展说明]

       计算机的网络体系结构分以下7层:  

        

       - 数据的传输自底向上,各层均遵循不同的协议。其中,HTTP协议,及下方的HTTPS协议在应用层。

       - HTTPS:  应用层协议,HyperText Transfer Protocol over Secure Socket Layer, 是以安全为目标的HTTP通道,可以说是HTTP的安全版。在HTTP下加入SSL层,用来将传输的内容加密。SSL的继任者是TLS(提供了数据加密及完整性的协议)。

       与HTTP区别:

       -- HTTPS 需要到CA申请证书,一般需要交费。此证书用于服务端,证明服务端用途类型,证书只有用于其对应的服务器时,客户端才信任此主机,例如银行系统网站。12306 开发者账号 https://developer.apple.com

       -- HTTP是明文传输, HTTPS则是具有安全性的SSL加密传输,身份认证的。

       -- 二者连接方式不同,默认端口也不一样,HTTP 是80HTTPS 是443

       - TCP/UDP: 传输层协议(Transmission Control Protocol, 传输控制协议)即时通讯Socket XMPP

           [Socket 是对TCP/IP协议的封装和应用,通过它,才能使用TCP/IP协议。] XMPP

       - IP: 网络层协议 (Internet Protocol, 网络协议)

    即时通讯技术:Socket 或XMPP

       总:TCP/IP 是传输数据,解决数据如何在网络中传输,而HTTP 是解决如何包装数据,使传输的数据有意义。

       

    2. HTTP请求/响应

        >HTTP请求:

        当客户端向服务器发出请求时,它向服务器传递了一个数据包NSData  0101,即请求信息,包括以下内容:

        - 请求方法,URI, 协议 URL:http://ip地址或域名www.baidu.com:80(端口)/路径 ?参数列表(username=qidalin&password=123456&id=123)  Get请求方法

        - 请求头(Request Header)

        - 请求正文

         例如:

            /* 请求方法/URI / 协议和协议版本 */

      GET/sample.jspHTTP/1.1

             /* 请求头 */

    Accept:image/gif.image/jpeg,*/*       // 指定客户端接收的内容类型

    Accept-Language:zh-cn                   // 浏览器可接受

    Connection:Keep-Alive                     // 是否需要持久连接

    Host:localhost                                 //  指定请求的服务器的域名和端口号

    User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)  // 包含发出请求的客户端信息

    Accept-Encoding:gzip,deflate            //  客户端可以支持的服务器返回内容压缩编码类型

    ……

             其他见“/http请求头

             /* 请求正文,可包含客户端提交的查询字符串信息 */

    type = 123

        > HTTP响应

        与请求类似,由以下组成:

        - 协议版本 / 状态码

        - 响应头 (Response Header)

        - 响应正文

         例如:

    /* 协议版本 / 状态码 */

        HTTP/1.1 200 OK

           /* 响应头 */

      Server:TWS

      Date:Tue, 19 Jan 2016 07:22:55 GMT

      Content-Type:application/json;charset=UTF-8

           …..

           其他见”/http响应头

           /* 响应正文 */

      {"resultMsg":"Comments are lesson than 10","data":null,"isSuccess":false}

    3. HTTP 请求方法

        根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。

        GET方法

            是默认的HTTP请求方法,平常也用GET方式提交表单数据,但这种方式下对表单数据只经过简单变码,同时作为URL的一部分向服务器发送,有一定的安全隐患。

            例如:http:// www.xxx.com/login.jsp?username=xiao&password=12345678

            从这个请求上很容易可辨认提交的内容(?之后的),而且此种方式是拼接URL串,若传输内容较多时,会使得URL很长,而URL长度是有限制的,超出的部分不会被发送。2k

        POST方法

            主要用于向服务器提交表单数据,尤其是大批量数据。此方式下,数据不是作为URL的一部分而是作为标准数据传送给服务器

            POST方法克服了GET方法中信息无法保密和数据量小的缺点。出于安全考虑,表单提交一般采用POST方式。

    4. HTTP状态码/应答码

        是用以表示服务器http响应状态的3位数字代码。

        所有状态码的第一个数字代表了五种状态之一。

        常用状态码如下:

        - 2字头 成功

        200 OK : 成功

        - 3字头 重定向

        300 Multiple Choices : 重定向

        - 4字头 请求错误

        400 Bad Request : 错误的请求

        401  Unauthorized : 未授权

        403  Forbidden : 禁止访问

        404 Not Found : 未找到

        - 5,6字头 服务器错误

        500 Internal Server Error :  内部服务器错误

        

        

  • 相关阅读:
    游标
    浅析数据准备区中的数据结构
    浅析代理键替换管道
    浅析何时进行概况分析
    浅析Staging
    XHTML教程——表单
    XHTML教程——文字格式与特殊字符
    XHTML教程——列表
    XHTML教程——标签
    CSS入门教程——CSS简介
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/5432792.html
Copyright © 2020-2023  润新知