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模式。
    
原文地址:https://www.cnblogs.com/feiguoguobokeyuan/p/13718345.html