一、HTTP 协议概念简述
- HTTP 协议请求的是 Resource 资源;
- 资源由 URL (统一资源定位符:Universal Resource Locator )决定的;
- 静态资源:具体放在服务器上某个文件夹下面,称之为静态资源;
- 动态资源:具体交给后端的代码运算之后返回对应的资源给客户端,可以是图片、html等;
二、 用 curl 讲解 GET 请求部分
(1) resquest line 请求行;
image.png
(2) 请求头部( request headers ):由 key:value 的形式组成;如下:
image.png
(3) 响应头部( response headers ):由 key:value 的形式组成,如下:
image.png
(4) 响应的主体内容 body,如下:
image.png
(5) 引发的问题:浏览器执行不同的请求,怎么知道渲染 html 的 ?
是由
Content-Type:text/html
所决定的;
(6) 负载数据 payload,一般情况下:
- GET 不携带负载数据;
- POST 通常会下带负载数据;
三、HTTP 响应的格式
(1) 状态行 status line
- 基本格式: HTTP[版本号] [状态码] [状态信息];
比如说:HTTP/1.1 [200] [OK]
(2) 状态码
- 2xx :一般来说是成功的状态;
- 3xx :重定向或资源未被修改;301:永久重定向;302:临时重定向;
- 4xx :客户端请求错误 401(未认证)、403(限制访问次数、频率)、404(没有找到对应的字) 等;
- 5xx :服务端错误 502(损坏的网关通道)、503、504(请求超时) 等;
(3) HTTP 是无状态的协议:
- 对于之前的交互没有记录;
- 每次交互能用的信息只有这次交互携带的信息;
(问:cookie 和 session ?)
(4) HTTP 查询字符串传递参数
查询字符串
query string
方法: request()->query();
(5) POST 请求发送数据
- form 表单提交,Content-type : application/x-www-form-urlencoded;
- file upload 文件上传,Content-type : multipart/form-data;
fetch/axios 上传, Content-type : application/json:
前端代码:view.php
image.png
image.png
后端代码:web.php
image.png
四、使用 Cookie 保持状态
原因:HTTP 协议是无状态(Stateless)的。
场景:服务器在某些场景下需要认证客户端(浏览器)。
laravel 已经封装了 Cookie ,自定义Cookie,可直接使用Cookie:
image.png
五、HTTP 方法( HTTP Method/Verb )
image.png image.png六、Session 会话
What is session ?
Session是服务器和客户端互相认识,保有秘密的一段时间。
- Session 过期:长时间未登录某网站,自动度过了session可以生成的最长时间;退出销毁 Session;在浏览器Cookie中清除Session;
- Session 劫持:黑客/攻击者拿到用户浏览器 Cookie ,通过编程方式把 Cookie 携带上访问站点,服务器会把 ‘黑客/攻击者’ 当作用户。
七、浏览器的同源策略
同源策略限制了从同一个源加载文档或脚本如何与另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的安全机制。
一个源的定义:如果两个页面的协议,端口(如有指定)和域名都相同,则两个页面有相同的源。
HTTP 访问控制(CORS:跨域资源共享),不受同源策略的影响;
当一个资源从该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
违反同源策略报错如下:"Access-Control-Allow-Orign"
image.png
解决方法:在middleware中创建一个中间件 Cors.php
image.png
八、 HTTPS(S = Secure 即安全协议)
HTTPS 如何进行加密 ?
主流的两种加密协议:
- TLS;
- SSL;
加密流程: 服务端将 HTTPS 证书颁发给客户端
九、XSS跨站脚本攻击(XSS : Cross-Site Scripting)
防护 XSS 防护有两种方式:
网友评论