1. 简述Http协议?
- 超文本传输协议
- 特色:
- 无状态,请求响应以后,再次发起请求时,不认识。
- 短链接,一次请求和一次响应就断开链接。
- 格式:
- GET请求:输入地址回车:https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F
请求由两部分组成:请求头和请求体,请求头和请求体经过\r\n\r\n分割,请求头和请求头之间经过\r\n分割。
"""GET /new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F http1.1\r\nhtml
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36\r\ndjango
Host:jd.com\r\n\r\n"""
响应由两部分组成:响应头和响应体,
b'HTTP/1.1 200 OK\r\nDate: Mon, 05 Nov 2018 01:15:31 GMT\r\nServer: Apache\r\n浏览器
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT\r\nETag: "51-47cf7e6ee8400"\r\nsocket
Accept-Ranges: bytes\r\nContent-Length: 81\r\nCache-Control: max-age=86400\r\nExpiresTue, 06 Nov 2018 01:15:31 GMT\r\n函数
Connection: Keep-Alive\r\nContent-Type: text/html\r\n\r\n <html><head> .... </html>'
- POST请求:
请求由两部分组成:请求头和请求体
"""POST /new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F http1.1\r\nspa
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36\r\nhtm
Host:jd.com\r\n\r\nusername=haoxu666&password=123"""中间件
响应:
b'HTTP/1.1 200 OK\r\n生命周期
Date: Mon, 05 Nov 2018 01:15:31 GMT\r\n路由
Server: Apache\r\nLast-Modified: Tue, 12 Jan 2010 13:48:00 GMT\r\n
ETag: "51-47cf7e6ee8400"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 81\r\n
Cache-Control: max-age=86400\r\n
Expires:Tue, 06 Nov 2018 01:15:31 GMT\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html\r\n\r\n
用户名或密码错误'
2. 你了解的请求头都有什么?
- User-Agent,设备信息。
- Host,当前访问的主机名称。
- referrer,作防盗链。
- Content-Type: ....
3. 你了解的请求方式有哪些?
- GET/POST/PUT/PATCH/DELETE/OPTIONS
4. django请求的生命周期
浏览器上输入 http://www.oldboyedu.com 地址回车发生了什么? - 浏览器输入:http://www.oldboyedu.com 回车 - DNS解析,将域名解析成IP。 - 浏览器(socket客户端),根据IP和端口(80)建立链接,发送请求。 - 服务端接收请求 - 实现了wsgi协议的模块,如:wsgiref接收到用户请求。 - 而后将请求转交给django的中间件,执行中间件的process_request(process_view)。 - 路由系统进行路由匹配。 - 匹配成功执行视图函数,视图函数进行业务处理(ORM操做数据+模板渲染) - 交给中间件的process_response方法 - wsigref的socket.send,将结果返回给浏览器。 - 断开socket链接。 - 浏览器断开链接。