Django入门篇

基于 socket 的 Web 应用

本质上:浏览器是一个socket客户端,服务器是一个socket服务端

import socket

soc   = socket.socket( )
soc.bind(( '127.0.0.1',8001 ))
soc.listen(5)

while True:
    so ,addr = soc.accept()
    data = so.recv(1024)
    so.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n')
    # so.send(b'sadf')

    print(data)
    data = str(data,encoding="utf-8")

    position = data.split('\r\n')[0].split(' ')[1]

    if '/index' == position:
        with open('index.html','rb') as f:
            da = f.read()
        so.send(da)
    else:
        so.send(b'404')
py文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>index</h1>
<h2>dafdasdf</h2>
<img
        src="https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike92%2C5%2C5%2C92%2C30/sign=775f519ac08065386fe7ac41f6b4ca21/fd039245d688d43f63d84526771ed21b0ff43bf5.jpg">
</body>
</html>
html文件

 http协议特性

-特点:1 基于TCP/IP协议之上的应用层协议
2 基于请求-响应模式(请求必定由客户端发送,服务端回复响应)
3 无状态保存(HTTP是一种不保存状态,级别,协议对于发送过的请求或响应都不做持久化处理。)
4 无连接(每次只处理一个请求,收到客户端应答后,即断开链接)

(4)无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

http请求协议与响应协议

http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身是由多行数据构成的字 文本。

请求协议

请求方式: get与post请求

  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的请求体中.
  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
  • GET与POST请求在服务端获取请求数据方式不同。
GET请求
    # 请求首行
    GET / HTTP/1.1\r\n
    # get请求后面的参数
    GET /?name=lqz&age=18 HTTP/1.1\r\n
    # 请求头
    Host: 127.0.0.1:8008\r\n
    Connection: keep-alive\r\n
    Cache-Control: max-age=0\r\n
    Upgrade-Insecure-Requests: 1\r\n
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36\r\n
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\n
    Accept-Language: zh-CN,zh;q=0.9\r\n
    Cookie: csrftoken=7xx6BxQDJ6KB0PM7qS8uTA892ACtooNbnnF4LDwlYk1Y7S7nTS81FBqwruizHsxF\r\n\r\n'
    # 请求体(get请求,请求体为空)    
    
    


    POST请求
    # 请求首行
    POST /?name=lqz&age=18 HTTP/1.1\r\n
    # 请求头
    Host: 127.0.0.1:8008\r\nConnection: keep-alive\r\nContent-Length: 21\r\nCache-Control: max-age=0\r\nOrigin: http://127.0.0.1:8008\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nReferer: http://127.0.0.1:8008/?name=lqz&age=18\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: csrftoken=7xx6BxQDJ6KB0PM7qS8uTA892ACtooNbnnF4LDwlYk1Y7S7nTS81FBqwruizHsxF\r\n\r\n
    # 请求体
    name=lqz&password=123'
GET请求 & POST请求

请求协议

猜你喜欢

转载自www.cnblogs.com/liu--huan/p/9903538.html