zoukankan      html  css  js  c++  java
  • 浅谈HTTP协议

    1 HTTP概念

    把握三个点:
    1 HTTP协议(超文本传输协议)   HTTP是一个基于TCP/IP通信协议来传递数据,默认端口80
    2 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事务处理没有记忆能力)
    3 HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
    

    2 HTTP协议结构

    HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。流程大致 : web Browser -- HTTP Protocol -- HTTP Server -- CGI Program -- Database
    
      客户端 c:request
      请求行  request line    请求方法  url  协议版本  
      请求头  header  头部字段名 : 值
      
      请求主体
        例如
        GET /hello.txt HTTP/1.1
        User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
        Host: www.example.com
        Accept-Language: en, mi
    
      服务端 s:response
      状态行   HTTP/1.1  200  OK   协议   状态码  注释
      消息报头  Date  Content-Type  content-Lnegth
    
      响应正文 content
        例如:
        HTTP/1.1 200 OK
        Date: Mon, 27 Jul 2009 12:28:53 GMT
        Server: Apache
        Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
        ETag: "34aa387-d-1568eb00"
        Accept-Ranges: bytes	
        Content-Length: 51
        Vary: Accept-Encoding
        Content-Type: text/plain	
    

    3 HTTP协议请求方式

    PUT   创建资源
    	  从客户端向服务器传送的数据取代指定的文档的内容。
    POST  更新资源
    	  post请求有消息体,可以携带大量数据,数据放在消息体中
    GET   获取资源
    	  get请求无消息体,只能携带少量数据,数据放在url中
    HEAD   获取报头资源
    OPTIONS  允许客户端查看服务器的性能。
    DELETE   删除指定页面资源
    TRACE    回显服务器收到的请求,主要用于测试或诊断
    CONNECT  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    

    4 HTTP响应头信息

    Allow   服务器支持的方法
    content-encoding   文档编码方法
    content-length   内容长度
    content-type   文档所属类型
    date   当前的时间
    location   客户端去哪提取文档
    reflesh    浏览器应在多少时间刷新文档
    server     服务器名字
    set-cookie  设置页面关联的cookie
    last-modified  文档最后的改动时间
    Host  域名
    Date  时间
    User-Agent  浏览器版本
    

    5 HTTP状态码

    5 种类型
    	1**	信息,服务器收到请求,需要请求者继续执行操作
    	2**	成功,操作被成功接收并处理
    	3**	重定向,需要进一步寻找资源
    	4**	客户端错误,请求包含语法错误或无法完成请求
    	5**	服务器错误,服务器在处理请求的过程中发生了错误
    常见的http状态码
    	200- 请求成功
    	301-资源被永久转移到其他URL
    	404 请求资源页面不在
    	500 内部服务器错误
    

    6 HTTP对象HttpRequest

    HttpRequest代表来自客户端的Http请求
    
    原理:request与response是页面发生请求时,Django内置模块把data数据包装成HttpRequest对象,然后Django加载合适的view方法,将HttpRequest对象作为第一个参数传给view方法,则其返回的结果就是HttpResponse对象.
    
    HttpRequest属性列表:
    
    path      请求页面的全路径,不包括域名—例如, "/django/student/"
    method    请求类型,大写表示, GET,POST 等
    GET       包含所有HTTP GET参数的Queryset对象,获取通过找到key获取value
    POST      包含所有HTTP POST参数的Queryset对象,获取通过找到key获取value
    COOKIES   包含所有cookies的Python字典对象,键值对Keys和values都是字符串
    META      包含所有可用HTTP头部信息的字典(端口,主机名,主机头信息等)
    FILES     包含所有上传文件的Queryset对象,对应 <input type="file" name="" />标签中name属性的值	
              注意:只有在请求方法是POST,并且在<form>有enctype="multipart/form-data"属性时FILES才拥有		      数据。否则,FILES 为空	
    
    user      是一个django.contrib.auth.models.User 对象,代表当前登录的用户,需要引入使用
    	      from django.contrib.auth import User  实例化 user = User()
    	      
    session   唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用
    		 当服务器session存储数据时,可以在request中调用 request.session['key']
    

    7 HTTP对象HttpResponse

    HttpResponse代表来自服务端的Http响应
    HttpResquest是由Django自动创建,但是HttpResponse则必须由我们自己创建,每个view方法必须返回一个HttpResponse对象   from django.http.response import HttpResponse
    
    HttpResponse常见的方法
    
    HttpResponse.has_header(header)   判断响应头是否有给定的名称,返回True or False,不区分大小写
    HttpResponse.set_cookie()	  通知客户端设置cookie信息,一般存储sessionid+value用于session取值
    HttpResponse.delete_cookie	  清除cookie信息
    HttpResponse.write(content)	   写入content至报文中
    HttpResponse.flush()	将缓存区的内容写入报文
    HttpResponse.tell()     移动文件中的操作指针
    
    HttpResponse 子类
    class HttpResponseRedirect      资源重定向
    class HttpResponseNotFound      资源未找到 404
    class HttpResponseBadRequest 	错误请求  400
    class HttpResponseForbidden     无权限访问 403
    class HttpResponseServerError   服务器错误 500
  • 相关阅读:
    sql对查询为null的值赋默认值
    org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误
    linux使用telnet测试端口
    grep和sed拉取线上日志,nc导入elk
    linux命令sed使用
    windows使用nc命令
    离线日志数据导入elk
    docker搭建elk日志收集系统
    curl: (60) Peer's Certificate has expired
    【Splay】【启发式合并】hdu6133 Army Formations
  • 原文地址:https://www.cnblogs.com/why957/p/9063515.html
Copyright © 2011-2022 走看看