HTTP下午茶

参考:https://www.kancloud.cn/kancloud/tealeaf-http/43837

目标:理解http协议和web应用,基于python搭建服务器

一、引入:

浏览器充当一个客户端与服务器交互的接口
包括CSS、HTML、Javascript、视频图片等,都是通过传输协议如http从服务器传输到客户端,从而在浏览器中显示
HTTP,即超文本传输协议,用以连接应用程序和超文本文档的传输,定义了一种规则,规定请求和响应的消息格式
互联网,网络连接设备,互联网协议(即IP协议)标志每一个设备或服务器,端口区分交互目标
域名解析系统(即DNS)处理URL和IP之间的对应关系,它是一个分布式的数据库
交互过程:输入网址 -> 网络接口 -> DNS解析 -> 服务器接收请求 -> 服务器响应 -> 浏览器呈现结果

二、URL(Uniform Resource Locator)统一资源定位符

[Scheme]://[host:port][path][?query]
Scheme:URL模式,定义web客户端访问资源的方式
host:资源路径或主机,描述资源的确切位置
port:监听请求的端口号,默认端口是80
path:URL路径,定义客户端请求服务器的什么资源
query:查询字符串,格式为key=value,用&连接
URL编码:默认只接受ASCII码,%转义,/?:&保留字

三、准备工作:

浏览器插件:Chrome Postman、REST HTTP API Client
HTTP GUI:PAW、HTTP Client、Fiddler、Cocoa Rest Client
HTTP命令行:Curl

四、HTTP之发起请求

浏览器:在地址栏输入网址,浏览器处理响应并进行展示
HTTP工具:返回原始相应数据
审查器(Inspector):查看HTTP请求和响应
发起请求:curl -X GET "http://www.reddit.com/" -m 30 -v
Method:HTTP请求方法,最常见的为GET和POST
Status:请求的响应状态码
GET请求:超链接或浏览器地址栏访问,用于取得资源
POST请求:提交表单,更大或敏感数据
HTTP头部:允许C/S在请求/响应的HTTP周期内发送额外信息
请求头部:
    Host:服务器域名
    Accept-Language:可接受的语言
    User-Agent:标志客户端的字符串
    Connection:连接类型

五、HTTP之处理响应

状态码:服务器接收请求后返回的标志
    200 OK:请求正在被处理
    302 Found:资源重定向到另一个URL
    404 Not Found:资源无法找到
    500 Internal Server Error:服务器出错
响应头部:
    Content-Encoding:数据编码类型
    Server:服务器名称
    Location:重定向地址
    Content-Type:响应数据类型

六、WEB应用状态

HTTP协议是无状态的,即服务器不保留客户端信息,每次请求都是全新的
WEB应用是有状态的,客户端会维持用户登录状态等
会话session:在客户端和服务器之间建立一个有状态的连接
    会话标志符:token,即一串数
    在客户端保持无状态等HTTP协议,服务器响应数据分配token,客户端发送请求携带token
    必须检查每个请求是否包含token,检查会话id确保未过期,基于会话id取出数据并处理响应
Cookies:一个请求/响应周期内,服务器发送,存储在客户端的一段数据,包含会话信息
    首次访问,request没有cookie,response会通过set-cookie添加cookie数据
AJAX(异步Javascript和XML):允许浏览器发送请求/处理响应时不用刷新整个页面
    每个操作都会触发一个AJAX请求,通过回调来处理请求的响应

七、安全性

安全的HTTP(HTTPS):请求和响应在发送前都会被加密(TLS协议)
    加密协议首先使用证书与远程服务器通信交换安全密钥
同源策略(Same-origin policy):允许来自同一站点的资源互相访问
    同源要求相同的协议、主机名和端口号
    同源策略限制访问的是文件内容即资源,而非链接如URL
跨域资源共享(CORS):与许绕过同源策略,请求另一个域名的资源
    添加新的HTTP头部,对一些域名的资源访问进行授权
会话劫持(Session Hijacking):攻击者获取用户的会话id
    重置会话:验证旧的会话id并生成一个新的会话id
    设置会话的过期时间
    整站使用HTTPS协议
跨站脚本攻击(XSS):不处理用户输入,导致HTML和Javascript注入到网页中被执行
    消除有问题的输入,或使用更安全的输入格式
    对用户输入数据进行转义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值