1、

import socket

server = socket.socket()
server.bind(("127.0.0.1", 8800))
server.listen(5) while True:
print('server is waiting...')
conn, addr = server.accept()
data = conn.recv(1024)
print('data:', data)
# conn.send(b'hello luffycity')
conn.send(b'HTTP/1.1 200 OK\r\n\r\nhello luffycity') # 添加http响应头
conn.close()

2

  

import socket

server = socket.socket()
server.bind(("127.0.0.1", 8800))
server.listen(5) while True:
print('server is waiting...')
conn, addr = server.accept()
data = conn.recv(1024)
print('data:', data) # 读取html文件
with open('index.html', 'r') as f:
data = f.read() # 响应报头 + data
conn.send(('HTTP/1.1 200 OK\r\n\r\n%s' % data).encode('utf8'))
conn.close()

3.http请求协议

请求格式

get方式

GET / HTTP/1.1\r\n
Host: 127.0.0.1:8800\r\n
Connection: keep-alive\r\n
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 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\r\n\r\n

请求首行\r\n
请求头\r\n
请求头\r\n
请求头\r\n
请求头\r\n
...\r\n\r\n

post方式

login.html 登录form表单

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:8800" method="post">
username: <input type="text" name="useranme">
password: <input type="password" name="password">
<input type="submit">
</form>
</body>
</html>

POST / HTTP/1.1\r\n
Host: 127.0.0.1:8800\r\n
Connection: keep-alive\r\n
Content-Length: 26\r\n
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
Origin: http://127.0.0.1:8800\r\n
Upgrade-Insecure-Requests: 1\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 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
Referer: http://127.0.0.1:8800/\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n\r\n useranme=jack&password=2222'
请求首行\r\n
请求头\r\n
请求头\r\n
请求头\r\n
请求头\r\n
...\r\n\r\n 请求体(a=1&b=2) # 注意只有post请求才会有请求体

区别

3、响应协议

   # 响应格式 + data
conn.send(('HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n%s' % data).encode('utf8'))

响应码状态

4

01- web应用与https协议的更多相关文章

  1. Loadrunner对https协议(单双向SSL)的web端性能测试

    1.项目背景 1.1 单双向SSL的含义及部署 单向SSL即我们说到的https协议. 特点是,浏览器需要请求验证服务器证书: 基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务 ...

  2. 使用loadrunner对https协议(单双向SSL)的web端性能测试 (转)

    1.项目背景 1.1 单双向SSL的含义及部署 单向SSL即我们说到的https协议. 特点是,浏览器需要请求验证服务器证书: 基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务 ...

  3. Nginx配置支持https协议-应用实践

    Nginx配置支持https协议-应用实践 https简介 HTTPS 是运行在 TLS/SSL 之上的 HTTP,与普通的 HTTP 相比,在数据传输的安全性上有很大的提升. TLS是传输层安全协议 ...

  4. 1.http 协议和 https 协议的原理

    首先,我们得知道应用层是 OSI 七层网络模型的第七层,不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如 DNS.FTP.Telnet.SMTP.HTTP. 等协议都是用于解决其各 ...

  5. 网站使用https协议

    了解https HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层.HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443. SSL ...

  6. 服务器开启https协议

    开启Tomcat https服务 发布企业级应用的时候遇到一个问题,就是IOS7.1之后app的下载地址URL必须是https开头的协议,所以服务器必须支持https协议. 实验环境:Mac OSX ...

  7. 【转】Tomcat启用HTTPS协议配置过程

    转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/530 ...

  8. IIS同时实现网站部分使用https协议访问另一部分http访问

    一:什么是https SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同 ...

  9. HTTPS 协议和原理

    1 HTTPS 协议概述 HTTPS 可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身 ...

  10. 下载https协议需要的cer证书

    一:https简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...

随机推荐

  1. Oracle EBS APP-FND-02938 多组织例程初始化产品报错

    Oralce EBS R12中引入了MOAC的控制,所有多OU的表对象都添加了数据库VPD的控制策略,需要访问这些对象中的数据,首先需要进行多组织环境的初始化,但是如果客户化的应用中也需要具备多OU的 ...

  2. [IIS | 用户权限] Connect as... 的设置

    ApplicationPoolIdentity is actually the best practice to use in IIS7. It is a dynamically created, u ...

  3. C#实现ADH815通讯

    最近在做自提柜项目,考虑到ADH815电路板在自助售卖行业的通用性.把通讯代码贴出来了. 下载地址

  4. MVC $.Ajax()+Json实现数据库访问并显示数据

    我们在使用搜索引擎时经常会看到这样一个效果 在输出输入相关文字时会有与之对应的相关提醒,作为一个MVC初学者我也做了一个简单版的“搜索工具”,分享给初学mvc和ajax的童鞋(各位大神勿喷),也加深我 ...

  5. 【转载】 C语言命令行小猪佩奇

    // ASCII Peppa Pig by Milo Yip #include <math.h> #include <stdio.h> #include <stdlib. ...

  6. #001 WebStrom SVN使用技巧

    WebStrom中SVN 的一些使用技巧 2016-03-23 17:11:52 星期三 使用SVN的目录,是为了来管理代码的版本. 服务端语言 都有比较完善的IDE,前端JS代码,由于之前一直都用 ...

  7. 解决数据库自增ID的问题

    (1)设置主键自增为何不可取这样的话,数据库本身是单点,不可拆库,因为id会重复. (2)依赖数据库自增机制达到全局ID唯一使用如下语句:REPLACE INTO Tickets64 (stub) V ...

  8. JDK1.6在LINUX下的安装配置[转]

    JDK1.6在LINUX下的安装是如何进行的呢,让我们开始我们的演示: Ubuntu Linux下jdk的安装与配置 1.JDK1.6安装准备 从sun公司网站www.sun.com下载linux版本 ...

  9. 各版本eclipse的maven配置

    1.indgo(3.7) install new software: http://download.eclipse.org/releases/indigo

  10. css3实现 依次出现三个点(一般用于提示加载中。。。 提交中。。。)

    <a href="javascript:" class="login">登录中<span class="dotting"& ...