Unit03: URL 、 HTTP 协议 、 HTTP优化
【HTTP】
URL: -地址
统一资源定位服务;网址,下载文件地址
URI: 统一资源标识符;
URL VS URI
所有的URL都是URI,但URI不一定是URL;
完整的URL:
网络协议: IP地址(虚拟地址) :端口号 /路径 ;查询参数 ?请求字符串 #哈希地址(锚点)
协议名://主机名:端口/资源路径;查询参数?请求字符串#哈希地址
window.location.protocol
window.location.hostname
window.location.port
window.location.path
window.location.query
window.location.hash
http:// 127.0.0.1 : 8080/11_SERVER&HTTP;JSESSION=123123213?key=value#mylink
ftp:// code.tarena.com :80/14_SERVER&HTTP;JSESSION=123123213?key=value
* 一般实际使用时
* http://www.baidu.com/news
* http://127.0.0.1:8888?key=value
* http://localhost:80#mylink
完整的URL元素:
- 网络协议
- IP地址(虚拟地址)
- 端口号
常用的:80
数据库:3306
- 路径
相对路径:
绝对路径:无论当前位置在哪,目标元素路径固定;
- 参数
- 查询数据
key=value&key=value
- 锚点
网络协议:
客户端与服务器之间的协议;
主流协议:
http协议: - https加密(openssl)协议;
socket协议: - html5的web socket ws:// 多用于与C/S架构
ftp协议,pop3协议等
- Http协议:
多用于与B/S架构
问题:
短链接
* 每次客户端与服务器端交互时
* 先建立连接
* 交互完毕后,关闭链接
无状态
* 服务器端只能记得住当次请求状态
版本历史:
HTTP 1.0 - 目前主流版本
HTTP 1.1 - 较新版本(向下兼容)
HTTP 2.0 - 最新版本
1.请求协议
* 请求类型
* GET - 最常使用的
* POST - 最常使用的
* HEAD
* PUT
* DELETE
* OPTIONS
* TRACE
* 请求类型的面试题
* 请求类型只有两种(错)
* 请求类型常用的有两种(对)
* 请求类型共有七种(错)
* 请求类型至少有七种(对)
* 标准API - 标准的请求方式:各种客户端请求方式统一;
* GET - 获取数据
* POST - 修改数据
* PUT - 新增数据
* DELETE - 删除数据 RESTful;
GET请求方式 - server.php?user=zhangwuji
1. - 请求行
-- 请求类型 - GET
-- 请求地址 - URL?key=value
-- 状态码 - 服务器端的状态 200
* 状态码
* 1xx - 服务器端的信息
* 一般实际开发中很少出现
* 2xx - 表示请求成功
* 200 - 请求成功
* 201 - 创建连接
* 202 - 接收请求
* 3xx - 表示重定向
* 302 - 表示重定向
* 304 - 表示服务器端资源没有变化,访问缓存
* 问题 - 这次请求没有真正地访问服务器端
* 305 - 表示使用代理
* 4xx - 客户端错误
* 400 - 错误的请求
* 403 - 拒绝访问
* 404 - 网页找不到
* 405 - 请求类型不允许
* 5xx - 服务器端错误
* 500 - 服务器端错误
* 502 - 路径错误
* 504 - 请求超时
* 505 - HTTP版本不支持
-- 协议版本
2- 请求头
-- 请求头的格式
* key : value
* key : value,value,value,...
-- 请求头的含义
* Accept - 表示服务器端接受的MIME类型
* MIME类型 - 文件类型
* MIME类型是如何定义的
// 定义MIME类型
<mime-mapping>
// 文件的扩展名
<extension>jpg</extension>
// 对应MIME类型
<mime-type>image/jpeg</mime-type>
</mime-mapping>
* 常见的MIME类型
* html - text/html
* htm - text/html
* xhtml- application/xhtml+xml
* css - text/css
* js - application/javascript text/javascript
* json - application/json
* jpg - image/jpeg
* jpeg - image/jpeg
* png - image/png
* text - text/plain
* webm - video/webm
* mp4 - video/mp4
* Accept-Encoding - 表示服务器端是否接受压缩
* gzip - 是指一种服务器端的压缩格式
* 问题 - 客户端请求的数据内容越大
* 对网络带宽的要求越高,流量占用大
* 用户体验不好 - 速度慢、对服务器造成的压力大
* Accept-Language - 表示服务器端接受的语言
* zh-CN - 简体中文
* zh-TW - 繁体中文
* zh - 中文
* us - 英文
* Connection - 表示当前的连接状态
* keep-alive - 表示保持连接
* Host - 表示当前电脑的地址(IP:端口号)
* Referer - 表示当前的请求来源于哪里
http://127.0.0.1:8888/http/index.html
* 实现防盗链接
* User-Agent - 获取用户的浏览器信息
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
* Cookie - 将Cookie自动携带请求头
- 请求体 - 空
POST请求方式
1- 请求行
* 请求类型 - POST
* 请求地址 - URL
* 状态码 - 200 OK
* 协议版本
2- 请求头
* Cache-Control - 缓存控制
* max-age=0 - 设置缓存最大活动周期
* 0 - 表示没有缓存
* 设置缓存保存的最大时间的单位为毫秒/秒
* Content-Length - 请求数据的长度(大小)
* Content-Type - 请求的MIME类型
* application/x-www-form-urlencoded
* <form>元素提交请求时默认的类型
* 一般文件上传时,类型一定这种格式
3- 请求体
* 请求参数
2.响应(Response)协议
- 响应行
* 状态码
* 协议版本
- 响应头
* Connection - 表示当前的连接状态
* keep-alive - 表示保持连接
* Content-Length - 响应数据的长度(大小)
* Content-Type - 响应数据的MIME类型
* 一般情况下 - text/html格式
* 设置响应页面编码 - charset=UTF-8
* Date - 响应的日期时间
Thu, 19 Nov 2015 08:17:03 GMT
yyyy-MM-dd hh:mm:ss
yyyy年MM月dd日 hh:mm:ss
* Keep-Alive - 设置保持连接的超时和最大存活时间
* timeout=5, max=99
* 一般都是在Connection的值设置为keep-alive时
* Server - 响应服务器端的信息
Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3
- 响应体
* 服务器端向客户端进行响应的数据内容
3. HTTP基本优化
A:域名解析
* 在HTML页面尽量减少外部链接
* <a href=""></a>
* <img src="" /> - HTML5的Canvas|SVG
* <script src=""></script>
* <link href="" />
* <video src=""></video>
* 尽量减少与其他网址交互
B: 创建连接
* 尽量减少客户端与服务器端之间的交互
* 减少请求的次数
* 使用Ajax异步交互
* 使用例如socket这种协议(实时连接)
C: 发送请求
* 请求数据进行压缩
D: 等待响应
* 主要从服务器端进行优化
* 将响应数据进行压缩
* 将缩短等待响应的时间 - timeout
* 浏览器对HTML|CSS的解析,对javascript的解析
4.安全的HTTP协议
* HTTP协议
* http://
* 默认端口号为80
* HTTP安全协议 - OpenSSL安全协议
* https://
* 默认端口号为443
* 举例
* 电商网站
* 银行网站* ...
POST请求方式
5.GET请求类型 VS POST请求类型
* 请求参数
* GET请求类型
* 将请求数据 - URL?key=value(浏览器地址栏)
* 安全相对比较低
* 请求地址的长度是有限制的
* 请求数据内容过多
* 如果请求数据中包含中文的话,需要转码的
* 更容易出现中文乱码问题
* POST请求类型
* 浏览器地址栏URL,不包含请求数据
* 安全相对比较高
* 请求数据在请求体中
* 对请求数据的大小(长度)没有要求
* 如果请求数据中包含中文的话,可以不转码
* 相对来讲对于中文的处理比较好
6.unicode码
* 金云龙 - %E9%87%91%E4%BA%91%E9%BE%99
* 将中文内容转换成unicode码
* 服务器端接收后,将unicode码转换为中文
* Web应用的中文乱码问题
7 * GET与POST请求方式的请求协议的区别
* GET请求方式
* 请求行
* 请求类型 - GET
* 请求地址 - URL?请求参数
* 请求体 - 空
* POST请求方式
* 请求行
* 请求类型 - POST
* 请求地址 - URL
* 请求体
* 请求参数
* 头信息
* 通用(请求与响应)头信息
* Connection
* Content-Length
* Content-Type
* Date
* 特殊响应头
* 控制是否缓存的头信息
* Cache-Control - 0 表示不缓存
* Expires - 0 表示不缓存
* 注意 - 是允许缓存
* 控制头信息
* HTML页面 - 使用<meta />元元素
* PHP页面 - header()函数设置头信息
转载于:https://www.cnblogs.com/mbyund/p/6406405.html
Unit03: URL 、 HTTP 协议 、 HTTP优化相关推荐
- pc前端js调起电脑本地应用程序(需要客户端配合 自定义URL Protocol 协议 )
由于做项目需要实现如题的一个功能,所以搜寻了相关资料. CSDN博文 自定义URL Protocol(客户端的配置):自定义URL Protocol 协议_chinahaerbin的博客-CSDN博客 ...
- php 获取当前访问URL的协议
第一种: ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FOR ...
- dedecms静态页面php获取参数,DedeCms织梦TAG标签静态生成html,url拼音及分页优化的方法...
DEDECMS自带的TAG标签是动态的,我们可以设置纯静态html,而且针对手机站也做了TAG静态化生成,非常强大,对于SEO提高收录及获取排名非常有好处,今天脚本之家小编为大家介绍织梦TAG标签伪静 ...
- 如何使用JavaScript获取URL的协议?
想要获取当前URL的协议,可以使用JavaScript的location.protocol属性.下面本篇文章就来给大家介绍location.protocol属性,希望对大家有所帮助. 什么是协议? 网 ...
- SEO站内优化的重点是什么?站内URL应该如何合理优化?
如果有人问你百度自然优化的精髓是什么?希望答案不再是"狂发外链"了.如今百度不再是几年前的百度,大量的算法更新对搜索引擎优化者的思维和手法有了更高的要求.然而百度更喜欢系统化用户体 ...
- LoadRunner v12.55发布,大量新增功能,各协议得到优化改进
2019独角兽企业重金招聘Python工程师标准>>> 近日,HP旗下最受欢迎的测试工具loadrunner发布了最新的v12.55版本,那么本次的新版有哪些改进呢,小编这就带大家一 ...
- 什么是URL?协议头、路径和端口是什么意思?
URL(Uniform Resource Locator,统一资源定位符)是互联网上标准资源的地址,互联网上每个文件(即资源)都有一个唯一的URL,它包含了文件的位置以及浏览器处理方式等信息. URL ...
- 构建基于SRU(Search and Retrieve via URL)协议的服务接口
一.SRU介绍(Search/Retrieve URL Service) 基于开放协议,通过带有指定参数的url获取对应的xml检索数据. SRW/SRU:SRW(Search/Retrieve fo ...
- 海量url mysql_海量数据mysql优化步骤
第一优化你的sql和索引: 第二加缓存,memcached,redis: 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的a ...
- 判断url是否包含协议并添加协议(判断url是否包含协议,url添加协议头)
import redef verify(url):if not re.search('http:|https:', url):url = 'http://' + urlreturn url
最新文章
- 我用AI分析了《赛博朋克 2077》的评价,发现真爱粉都是来吸猫的
- R语言ggplot2可视化柱状图并自定义柱体的宽度(通过变量指定条形的宽度)实战、条形图并自定义条形的宽度实战
- 数据结构与算法 / 概念
- 使用存储过程及触发器案例
- Linux系统安装python3和创建python3虚拟环境
- MySQL:行锁、表锁、乐观锁、悲观锁、读锁、写锁
- wsl用户帐户没有必要的权限_Windows的Linux子系统(WSL)即将带来图形化应用
- 尺度不变网络提升人群计数性能(附Github地址)
- 范凯:对移动社交型app的一点思考
- 列出场景对象Lightmap属性
- 连接动态链接库时找不到链接库的解决办法
- Linux和onenote很像的软件,Microsoft OneNote替代方案?
- ae运动模糊插件安装教程_AEPR运动模糊插件(RSMB) REVisionFX ReelSmart Motion Blur Pro v4.2.3...
- 发现谷歌学术搜索真好用啊
- 西班牙出差见闻之一(出发)
- Rendezvous: A Search Engine for Binary Code
- 物联网-移远m26使用MQTT协议,AT指令对接阿里云
- 谈谈前端浏览器兼容和性能优化
- CSS font-family 中英文名称集合
- MATLAB2016笔记(九):概率统计( 概率密度、统计作图、统计特征、累积概率分布、随机变量产生)
热门文章
- 如何了解 ![CDATA[ ]]的作用?
- 从电池中管理使用电动车(EVS)和电力注射构成控制EV的充电和排放作为有吸引力的研究领域的问题
- 信息管理导论川大667 | 第一章核心知识点
- 用计算机制作数学PPT课件,使用flash制作数学课件经典案例.ppt
- c++ 实现类注册机制的方法
- 微信小程序-WXS脚本
- Unity的packages管理机制
- 核磁数据分析学习笔记[02_预处理、GLM相关]
- 一个员工的离职成本有多高,很恐怖,员工、管理者、老板都要慎重
- 如何处理构造函数抛出的异常?