博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈HTTP协议
阅读量:6894 次
发布时间:2019-06-27

本文共 3282 字,大约阅读时间需要 10 分钟。

浅谈HTTP协议

1 HTTP概念

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

2 HTTP协议结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。流程大致 : web Browser -- HTTP Protocol -- HTTP Server -- CGI Program -- Database  客户端 client: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  服务端 server: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  设置页面关联的cookielast-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获取valuePOST      包含所有HTTP POST参数的Queryset对象,获取通过找到key获取valueCOOKIES   包含所有cookies的Python字典对象,键值对Keys和values都是字符串META      包含所有可用HTTP头部信息的字典(端口,主机名,主机头信息等)FILES     包含所有上传文件的Queryset对象,对应 标签中name属性的值             注意:只有在请求方法是POST,并且在
有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 HttpResponseHttpResponse常见的方法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      资源未找到 404class HttpResponseBadRequest    错误请求  400class HttpResponseForbidden     无权限访问 403class HttpResponseServerError   服务器错误 500

转载地址:http://qxkdl.baihongyu.com/

你可能感兴趣的文章
金蝶kis记账王管理用户权限的方法
查看>>
分布式设计与开发(二)------几种必须了解的分布式算法
查看>>
JS中typeof与instanceof的区别
查看>>
PHP中str_replace函数使用小结
查看>>
Oracle用户、角色、授权和表空间
查看>>
linux下修改SWAP空间大小
查看>>
我的友情链接
查看>>
mac 安装python3.4、django
查看>>
你想建设一个能承受500万PV/每天的网站吗?如果计算呢?
查看>>
iOS8完美越狱在路上了吗?
查看>>
编写更好的jQuery代码的建议
查看>>
linux 入门基础知识(一)
查看>>
项目质量管理
查看>>
将linux英文系统变成中文系统
查看>>
CXDVA视频组件
查看>>
给自己降降级你会发现一片广阔的天空
查看>>
Linux Apache 编译安装;
查看>>
python2.7x Django mysql在windows Ubuntu下的环境搭建
查看>>
33 一生能有几个?
查看>>
我的友情链接
查看>>