django学习----http协议

了解http协议的格式

  请求协议:request

      请求首行:包含请求方式(如get、post) url 协议版本

      请求头:请求信息

      空行:

      请求数据:与网页内容相关的信息

    get与post的区别:

      在数据上get请求数据不会在请求体中它会放在URL后面,并且数据量有限制

      post没有数据限制{表单:调整method="post"}

      

      在地址栏直接给出地址的一定是get请求{地址栏请求,表单(默认)}

  

1、Host

请求的web服务器域名地址

2、User-Agent

HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断出http请求的客户端的浏览器的类型。

3、Accept

指定客户端能够接收的内容类型,内容类型的先后次序表示客户都接收的先后次序

4、Accept-Lanuage

指定HTTP客户端浏览器用来展示返回信息优先选择的语言

5、Accept-Encoding

指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。
而这里设置的就是客户端浏览器所能够支持的返回压缩格式。

6、Accept-Charset

HTTP客户端浏览器可以接受的字符编码集

7、Content-Type

显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性

有关Content-Type属性值有如下两种编码类型:

(1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。
     然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。

(2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

当提交为表单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。

  

GET /562f25980001b1b106000338.jpg HTTP/1.1
Host    img.mukewang.com
User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept    image/webp,image/*,*/*;q=0.8
Referer    http://www.imooc.com/
Accept-Encoding    gzip, deflate, sdch
Accept-Language    zh-CN,zh;q=0.8

get

POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

post

 

http协议格式    

     请求协议  (request)

         请求首行 :   方法 url 协议版本
         请求头   :   请求信息
         空行     :
         请求数据          

            GET  url  http 1.1
            Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
            Accept-Encoding:gzip, deflate, br
            Accept-Language:zh-CN,zh;q=0.8
            Cache-Control:max-age=0
            Connection:keep-alive
            Cookie:BAIDUID=88ECF89623BCA604E91B4C2250FE0F69:FG=1; BIDUPSID=88ECF89623BCA604E91B4C2250FE0F69; PSTM=1499646358; BDUSS=VFseTdVbGNEQWxZZFdqb21wZE1PR2ZsSnBTWW5LfnpuU1hJcEI4VGJ4WHdYT0ZaSVFBQUFBJCQAAAAAAAAAAAEAAAD3IxBGbGhmNDU3MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDPuVnwz7lZO; cflag=4%3A3; BD_HOME=1; H_PS_PSSID=1420_13290_21127_20242_24023_20718; BD_UPN=12314353
            Host:www.baidu.com
            Upgrade-Insecure-Requests:1
            User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36           

            username="yuan"    pwd=123    

            GET请求常用的操作:
               1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
               2. 点击页面上的超链接也一定是GET请求
               3. 提交表单时,表单默认使用GET请求,但可以设置为POST

     响应协议    (response)

            响应首行
            响应头
            空行
            响应内容

            http 1.1 200 OK
            Bdpagetype:2
            Bdqid:0x9d4742100000b7c6
            Bduserid:1175462903
            Cache-Control:private
            Connection:Keep-Alive
            Content-Encoding:gzip
            Content-Type:text/html;charset=utf-8
            Date:Thu, 19 Oct 2017 01:58:07 GMT
            Expires:Thu, 19 Oct 2017 01:58:06 GMT
            Server:BWS/1.1
            Set-Cookie:BDSVRTM=249; path=/
            Set-Cookie:BD_HOME=1; path=/
            Set-Cookie:H_PS_PSSID=1420_13290_21127_20242_24023_20718; path=/; domain=.baidu.com
            Strict-Transport-Security:max-age=172800
            Transfer-Encoding:chunked
            X-Ua-Compatible:IE=Edge,chrome=1

http协议格式

  首行

  1. Request URL:

    https://www.baidu.com/

  2. Request Method:

    GET

  3. Status Code:

    200 OK

  4. Remote Address:

    111.13.100.91:443

  5. Referrer Policy:

    no-referrer-when-downgrade

  以下是百度的相关request  hedear

    1. Accept:(告诉服务器可以渲染的内容 (q:权重 */*我能渲染所以内容))

      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    2. Accept-Encoding:(支持的压缩格式)

      gzip, deflate, br

    3. Accept-Language:(我能支持的语言)

      zh-CN,zh;q=0.8

    4. Connection:(http版本(1.0(close)/1.1(keep-alive) 区别在于 是否访问完后立即断开/))

      keep-alive

    5. Cookie:(可以理解为是一个容器,网站给发的随机键值对(理解为身份信息))

      BAIDUID=6E4258C5B7906EB4F2CF046D0878752C:FG=1; PSTM=1505553583; BIDUPSID=9F93B6827FE1722F86B831913432D897; BD_UPN=12314753; BD_HOME=0; H_PS_PSSID=1427_21085_20927

    6. Host:

      www.baidu.com

    7. Upgrade-Insecure-Requests:(升级(与http和https相关)的 参数默认升级)

      1

    8. User-Agent:(用户代理(告诉我是在什么操作系统上的什么软件发送的))

      Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36

  响应协议 :response

    

    1. Bdpagetype:

      1

    2. Bdqid:

      0x8655726500017a00

    3. Bduserid:

      0

    4. Cache-Control:

      private

    5. Connection:

      Keep-Alive

    6. Content-Encoding:

      gzip

    7. Content-Type:

      text/html; charset=utf-8

    8. Cxy_all:

      baidu+b7ce8850976e75ce963ceab5f0b07995

    9. Date:

      Thu, 19 Oct 2017 10:34:33 GMT

    10. Expires:

      Thu, 19 Oct 2017 10:34:16 GMT

    11. Server:

      BWS/1.1

    12. Set-Cookie:

      BDSVRTM=0; path=/

    13. Set-Cookie:

      BD_HOME=0; path=/

    14. Set-Cookie:

      H_PS_PSSID=1427_21085_20927; path=/; domain=.baidu.com

    15. Strict-Transport-Security:

      max-age=172800

    16. Transfer-Encoding:

      chunked

    17. Vary:

      Accept-Encoding

    18. X-Powered-By:

      HPHP

    19. X-Ua-Compatible:

      IE=Edge,chrome=1

时间: 2024-08-29 00:44:03

django学习----http协议的相关文章

Django学习小组出品:一起来做一个简单的Blog第一周文档(教程)

本节是 django blog 项目的开篇,是 django 学习小组的集体学习成果.django学习小组是由我发起的一个促进 django 新手互相学习.互相帮助的组织.小组在一边学习 django 的同时将一起完成三个项目: 一个简单django blog,用于发布小组每周的学习和开发文档 django中国社区,为国内的 django 开发者们提供一个长期维护的 django 社区,聚集全国的 django 开发者到这个社区上来 django 问答社区, 类似于segmentfault 和

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

Django学习笔记 Day One

Time:2016年01月01日21:38:55 Description: 从今天开始我开始写我的Django学习笔记,因为网络上太多太杂乱的文章,不成系统,还有就是太多的培训机构讲述的东西过于简单,没有深入讲解Django,算是自己的一个小笔记吧,主要参考的是Django1.8的官方文档,地址:www.djangoproject.com,一家之言,大神勿喷! Content: Day One. First exploration of django? 我们在Web开发过程中,常常会遇到编写重复

Django学习笔记(三)—— 模型 model

疯狂的暑假学习之 Django学习笔记(三)-- 模型 model 参考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # 用什么数据库管理系统 'NAME': '', # 数据库名称,如果用sqlite,要写完整路径 'USER': '', # 如果用sqlite,这个不用写 'PASSWORD': '', # 如果用sqlite,这个不用写

django学习之Model(四)MakingQuery

上一篇写到MakingQuey中的filter,本篇接着来. 10)-扩展多值的关系 如果对一个ManyToManyField或ForeignKey的表进行filter过滤查询的话,有2中方法可以用.分别是: #1 Blog.objects.filter(entry__headline__contains='Lennon', entry__pub_date__year=2008) #2 Blog.objects.filter(entry__headline__contains='Lennon')

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

django学习笔记

用的windows操作系统,真是蛋疼啊,等赚了钱,我真要买一台苹果或者换个12寸的小本,用ubuntu,所以一下命令都是windows的,真心蛋疼啊,为什么没有自动补完啊 首先,随便下个django. 然后,进入命令行,进入django的文件夹键入如下命令 django>python setup.py install 经过短时间的等待,安装完成. 然后随便建一个文件夹,比如myproject,命令行进入文件夹,然后输入如下命令,一个django项目就算建好了 myproject>django-

django学习之Model(五)MakingQuery

接着上篇. 10-一次更新多个对象 有时想要对QuerySet中的所有对象的某一个field来设定一个值,这时候可以像下边这样用update(): # Update all the headlines with pub_date in 2007. Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same') 这样使用的update()只能是没有关联关系的model或者有ForeignKey的

Django学习笔记(四)—— Admin

疯狂的暑假学习之  Django学习笔记(四)-- Admin 参考:<The Django Book> 第6章 Django 可以使用admin自动创建管理界面. 1. 配置 django-admin.py startproject 创建的项目,如果没有注解掉默认的配置,python manage.py syncdb 创建用户后,直接 http://xxxxxx/admin 输入密码即可进入. 如果修改了配置文件,保证将 django.contrib.admin 加入setting.py 中