zoukankan      html  css  js  c++  java
  • http协议

    http

    • 工作在b/s架构上,属于应用层协议,全程为超文本传输协议

    • # URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。
      
      #3、以下面这个URL为例,介绍下普通URL的各部分组成:
      http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
      
      一个完整的URL包括以下几部分:
      #1.协议部分:http://
      该URL的协议部分为“http:”,在"HTTP"后面的“//”为分隔符。这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等。
      ===>如果不写,浏览器会自动补全,但必须有
      
      #2.域名部分:www.aspxfans.com
      一个URL中,也可以使用IP地址作为域名使用
      ===>必须有
      
      #3.端口部分:8080
      跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。
      ===>端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口80
      
      #4.虚拟目录部分:/news/
      从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。
      ===>虚拟目录也不是一个URL必须的部分。
      
      #5.文件名部分:index.asp
      从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。
      ===>文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
      
      #6.参数部分:boardID=5&ID=24618&page=1
      从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
      ===>参数部分非必须
      
      #7.锚部分:#name
      从“#” 开始到最后,都是锚部分。也就是页面内部的定位
      ===>锚部分也不是一个URL必须的部分
      
    • request请求的格式

      组成部分:请求行,请求头部,空行,请求数据
      get与post请求的关系
      #1、区别1: 参数的组织方式不同
      GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,POST方法是把提交的数据放在HTTP包的Body中.因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
      
      #2、区别2:传输数据大小限制
      首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。而在实际开发中存在的限制主要有:GET:特定浏览器和服务器对URL长度有限制,POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,
      GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
      
      #3、区别3:安全性
      POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击
      
    • response响应的格式

      组成部分:状态行、消息报头、空行和响应正文。
      #第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
      第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
      #第二部分:消息报头,用来说明客户端要使用的一些附加信息,
      Date:生成响应的日期和时间;
      Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
      #第三部分:空行,消息报头后面的空行是必须的
      
      #第四部分:响应正文,服务器返回给客户端的文本信息。
      空行后面的html部分为响应正文。
      状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
      
      1xx:指示信息--表示请求已接收,继续处理
      2xx:成功--表示请求已被成功接收、理解、接受
      3xx:重定向--要完成请求必须进行更进一步的操作
      4xx:客户端错误--请求有语法错误或请求无法实现
      5xx:服务器端错误--服务器未能实现合法的请求
      常见状态码:
      
      200 OK                        //客户端请求成功
      400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
      401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
      403 Forbidden                 //服务器收到请求,但是拒绝提供服务
      404 Not Found                 //请求资源不存在,eg:输入了错误的URL
      500 Internal Server Error     //服务器发生不可预期的错误
      503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
      
      http特点
      #1、简单快速 2、灵活
      #3、无连接 针对http无连接,人们设计了非持久连接和持久连接。关于http协议非持久连接和持久连接是针对tcp协议的。当客户机/服务器的交互运行于TCP协议上时,应用程序的每个请求/响应对是经不同的TCP连接时,则该应用程序使用非持久连接,而当应用程序的每个请求/响应对是经相同的TCP连接发送,则该应用程序使用持久连接。
      #4、无状态
      所谓http是无状态协议,言外之意是说http协议没法保存客户机信息,
      无状态的优点是:
          在服务器不需要先前信息时它的应答就较快。
      无状态的缺点是:
          缺少状态意味着如果后续处理需要前面的信息,则它必须重传。这样可能导致每次连接传送的数据量增大
      关于http无状态阻碍了交互式应用程序的实现。比如记录用户浏览哪些网页、判断用户是否拥有权限访问等。于是,两种用于保持HTTP状态的技术就应运而生了,一个是Cookie,而另一个则是Session。
      #5、支持B/S及C/S模式。
      
  • 相关阅读:
    Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据
    Android商城开发系列(五)—— 商城首页回到顶部和搜索框布局实现
    Android商城开发系列(一)——开篇
    Android商城开发系列(四)——butterknife的使用
    Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏
    Android商城开发系列(二)——App启动欢迎页面制作
    使用git克隆指定分支的代码
    mongodb 3.x WiredTiger存储优化测试
    oracle 文件导出
    本地安装gem install --local redis-stat-0.4.13.gem
  • 原文地址:https://www.cnblogs.com/feiguoguobokeyuan/p/13718345.html
Copyright © 2011-2022 走看看