42Team-Flask框架-HTTP协议快速了解
HTTP协议快速了解
先不要说GET和POST,HTTP协议是什么?
HTTP超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的www文件都必须遵守这个标准,HTTP的出现是为了发送和接受html文档。
我们目前通过浏览器访问的近乎所有的网页,都是通过HTTP协议接受和发送页面和请求的。在浏览网站时,你会发现地址栏的域名前,有http://
或https://
这样的标记,这就说明你现在正在使用http协议来访问你所看到的这个页面。
那在这里再简单说一下HTTP和HTTPS区别。
由于我们的网络环境其实并不安全,我们通过HTTP协议获取的网页或者数据很容易被中间人监听或者篡改,有时候你可能会在百度这种页面上看到出现了与页面风格极其不符的弹窗广告,一种可能是你浏览器或者系统内的弹窗广告,还有一种可能就是你的页面被别人篡改过,广告被加入到了页面中。(这时候你可以问候你的ISP服务商)
为了防止我们的数据在互联网上裸奔,HTTPS面世了。他在HTTP协议的基础上引入了SSL/TLS加密技术,有了加密技术我们的数据哪怕被劫持了,但是攻击者没有我们密钥Key也是无法解密的。但是HTTPS绝对安全吗?这世上没有绝对的安全,如果为你颁发数字证书的机构把你的密钥泄露了,这不就是穿了层衣服的数据而已?想扒还是照样扒!但是多亏有法律,证书颁发机构应该不会去做这种事情。但是若通过其他方式知道了你的算法密钥也是一个道理。
回到HTTP,我们知道目前的HTTP 1.1版本有8种请求方式/方法:
请求方式 | 说明 |
---|---|
GET | 向特定的路径资源发出请求 |
POST | 向指定的路径提交数据进行处理请求,一般用于表单的提交数据 |
HEAD | 与get请求相似的响应,但是请求体不会被返回 |
OPTION | 返回服务器针对特定资源所支持的HTTP请求方法 |
PUT | 向指定资源位置上传其最新内容 |
DELETE | 请求服务器删除请求的URL所标识的资源 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
在这里仅介绍两种常用的请求方法GET和POST。
GET和POST请求方法
GET请求方法
向特定的路径资源发出请求。常见发起GET请求方式:通过URL请求、src/href、Form表单等。
https://yeefire.com/getinfo?userName=yeefire&password=123
GET特点很明显,地址栏上出现?
并且后面通过&
连接一对对的键值对的话很有可能就是GET请求。
POST请求方法
向指定的资源提交要被处理的数据,多用于提交数据。多由Form表单发起POST请求。POST请求将参数放置在request-body请求体中。
GET和POST请求方法的区别
GET | POST |
---|---|
GET在浏览器回退时是无所谓的 | POST会再次提交请求 |
GET产生的URL地址可以被Bookmark | POST不可以 |
GET请求会被浏览器主动cache | POST不会,除非手动设置 |
GET请求只能进行url编码 | POST支持多种编码方式 |
GET请求参数会被完整保留在浏览器历史记录里 | POST中的参数不会被保留 |
GET请求在URL中传送的参数是有长度限制的 | POST么有 |
对参数的数据类型,GET只接受ASCII字符 | POST没有限制 |
GET因为参数直接暴露在URL上,所以不能用来传递敏感信息 | POST相对来说更安全 |
GET参数通过URL传递 | POST放在Request body中 |
HTTP状态码
HTTP状态码(HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码,所有状态码的第一个数字代表了响应的五种状态之一。
状态码 | 说明 |
---|---|
1xx | 指示信息–表示请求已接收,继续处理 |
2xx | 成功–表示请求已被成功接收、理解、接受 |
3xx | 重定向–要完成请求必须进行更进一步的操作 |
4xx | 客户端错误–请求有语法错误或请求无法实现 |
5xx | 服务器端错误–服务器未能实现合法的请求 |