学习Django,http协议,

学习Django

http协议

规则

‘‘‘
http协议:超文本传输协议
①基于TCP/IP协议基础上的应用层协议,底层实现仍为socket
②基于请求-响应模式:通讯一定是从客户端开始,服务器端接受到客户端一定会做出对应响应
③无状态:协议不对任何一次通讯状态和任何数据做保存
③无连接:一次连接只完成一次请求-响应,请求响应完毕后立即断开连接
‘‘‘

http工作原理(事务)

# 一次http操作称之为一个事务,工作过程可分为四步
# 1.客户端与服务端建立连接
# 2.客户端发生一个http协议指定格式的请求
# 3.服务器端接收请求后,响应一个http协议指定格式的响应
# 4.客户端将服务器的响应显示展现给用户

请求

‘‘‘
请求行:GET|POST(请求方式) /(请求路径) HTTP/1.1(http协议版本)
请求头:(了解)
请求体:GET 请求体放到请求路径后进行拼接
    POST会在请求行与请求头结束后,以数据包方式单独发送

请求报文
# 请求行  请求头  请求体
‘‘‘
POST / HTTP/1.1\r\n    #请求行(必须)
Host: 127.0.0.1:8001\r\n
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n
\r\n
usr=abc&pwd=123  #请求体(可选)
‘‘‘

响应

‘‘‘
响应行(必须):HTTP/1.1(http协议版本) 200(状态码) ok(状态结束)
                           1打头:消息通知
                           2打头:请求成功
                           3打头:重定向(重新定向)
                           4打头:客户端错误
                           5打头:服务器端错误
响应头(可选):(了解)
响应体(可选):具体数据
注意:响应规则与响应体内容之间还需要一个\r\n标识分割 响应规则:响应行和响应头

响应报文:
# 响应行  响应头  响应体
‘‘‘
HTTP/1.1 200 OK\r\n  #响应行
Content-type:text/html\r\n  #响应头
\r\n
Login Success #响应体
‘‘‘
‘‘‘
import socket
PORT = 4396
server = socket.socket()
server.bind((‘127.0.0.1‘,PORT))
server.listen(5)
print(‘服务端启动:http://127.0.0.1:%s‘% PORT)
while True:
    browser,_ = server.accept()
    data = browser.recv(1024).decode(‘utf-8‘)
    print(data) #一次请求就会获得一次响应,连接不上会一直请求,所以会产生多个响应,超时结束
#server
import socket
PORT = 4396
server = socket.socket()
server.bind((‘127.0.0.1‘,PORT))
server.listen(5)
print(‘服务端启动:http://127.0.0.1:%s‘% PORT)
while True:
    browser,_ = server.accept()
    data = browser.recv(1024).decode(‘utf-8‘)
    print(data)
    # 要遵循http协议返回数据:响应行(必须) 响应头 响应体
    browser.send(b‘HTTP/1.1 200 OK\r\n‘)  # 响应行(必须),以\r\n结束
    browser.send(b‘Content-type:text/html\r\n‘) # 响应头(可选),服务于响应体
    browser.send(b‘\r\n‘)  # 响应规则与响应体内容之间还需要一个\r\n标识分割
    browser.send(b‘normal msg‘)  # 响应体(可选)
    browser.send(b‘<h1>hello wold</h1>‘) # 响应体(可选)
    browser.close()

  

原文地址:https://www.cnblogs.com/lizeqian1994/p/10468762.html

时间: 2024-10-17 05:41:46

学习Django,http协议,的相关文章

[python]学习Django中的python知识拾遗

1.使用正则表达式进行URL匹配 urlpatterns = patterns('', # ... (r'^time/plus/\d+/$', hours_ahead), # ... ) (1)使用r代表字符串是原始字符串,表示python不会对立面的反斜杠\转义符进行处理,使用正则表达式一般使用原始字符串. (2)使用\d+表示匹配1个或者多个数字,如果限定只能使用两个数字,则\d{1,2}. (3)如果要把正则表达式的某个数作为参数,则用小括号包起来,如(r'^time/plus/(\d{1

学习django就看这本书了!django book 2.0中文版

所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/29/ 来源:python黑洞网 djano介绍 Django 是从真实世界的应用中成长起来的,它是由 堪萨斯(Kansas)州 Lawrence 城中的一个 网络开发小组编写的. 它诞生于 2003 年秋天,那时 Lawrence Journal-World 报纸的 程序员 Adrian Holovaty 和Simon Willison 开

Python学习---django下的cookie操作 180201

什么是Cookies 什么是Cookies cookies设置的原因: 1. http请求的无记忆性: 2.加快访问速度  3. 减少服务器压力 cookies特点: cookies保存在客户端浏览器上的键值对,且每次访问页面都会带着cookies cookies可以主动清除 cookies也可以被"伪造",可以被别人带着cookies操作你的账号 cookies会根据域名进行分类,不能跨域共享,也就是说百度有百度的,JD有京东的 cookies必须请求数据成功后才能有用哈 浏览器可以

OC学习篇之---协议的概念和用法

这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的. 协议就是定义了一组方法,然后让其他类去实现 下面来看代码: WithProtocol.h [objc] vi

(转载)OC学习篇之---协议的概念和用法

在前一篇文章中我们介绍了OC中类的延展,这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的. 协议就是定义了一组方法,然后让其他类去实现. 下面来看代码: Wit

MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用

0 前言 MQTT是IBM开发的一个即时通讯协议.MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制.Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用. 若初次接触MQTT协议,可先理解以下概念: [MQTT协议特点]--相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制. [MQTT协议角色]--在RESTful架构的物联网

快速学习django

可以从下面说的方法入手,2天就可以入门django 0.先学习一下django tutorial. 1.写一个增删改查的简单blog. 2.增加用户注册,登录,退出. 3.增加分页,评论. 4.用bootstrap美化html页面. 5.设计API. 碰到问题查看文档和源代码.搜索google.

javaSE学习笔记—HTTP协议(10)

客户端浏览器和服务器Tomcat要进行基本的请求和响应的处理. 其实浏览器和服务器通信的数据的格式已经使用协议进行固定好了,只要双方发送固定格式的数据,那么就可以完成基本的通信. 如果开发者需要查看这样的数据格式,那么就需要安装一个浏览器的HTTP协议相关的插件. 如果要深入的学习浏览器和服务器通信的数据,那么需要详细的掌握他们之间发送的数据内容. 1  请求信息 GET / HTTP/1.1 ? 请求行 Accept: */* Accept-Language: zh-cn,en-US;q=0.

JavaWeb学习笔记1---http协议

一.什么是HTTP协议: 1.概念: 客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式(规定客户端和服务器如何进行交互). HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是基于TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程. 注:HTTP协议是学习JavaWeb开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,