AJAX有关的请求协议及HTTP报文
URI:统一资源标识符 URI=URL+URN
URL:统一资源定位符
URN:统一资源名称
上边的图片编号对应下边的编号说明:
1.HTTP(占90%市场)/HTTPS/FTP 传输协议(可以理解为快递小哥,是内容传输的媒介,通过传输协议客户端可以把一些信息传递给服务器,服务器也可以把内容传递给客户端)
- HTTP:超文本传输协议,客户端和服务器端除了可以传输文本以外,还可以传输图片、音视频等富媒体资源(二进制文件流/BASE64...)
- HTTPS:更加安全的HTTP,因为他的传输通道经过了SSl加密的(基本上和金钱打交道的网站是HTTPS传输协议的)
- FTP:文本上传协议/资源文件传输协议,经常应用于对服务器资源文件的管理(上传/下载...)
2.域名
- 一级域名:www.qq.com (需要购买),二级或者三级域名需要 自己去分配即可
- 二级域名:sports.qq.com
- 三级域名:kbs.sports.qq.com
3.端口号
- HTTP 默认80
- HTTPS 默认443
- FTP 默认21
端口号的取值范围0~65535之间,端口号被一个项目/程序占用,其他的程序就不能使用这个端口号了
4.请求资源文件的路径和名称 /students/index.html 请求的是当前项目students文件夹下的index.html文件 /index.html 请求的是当前项目根目录下的index.html文件,在不指定请求文件的时候,默认请求的资源文件一般都是/index.html或者/default.html()
5.问号传参 ?xxx=xxx&xxx=xxx...
- 1)客户端可以通过问号传参的方式,把一些信息传递给服务器端
- 2)在从列表页面跳转到详情页面的时候,点击列表页面中的每一条记录,都会跳转到指定的详情页面,详情页面展示的内容是不一样的,注意:详情页面都是同一个页面,想要展示不一样的内容,就需要区分点击的是哪一条记录,此时我们就可以通过问号传参的方式进行 在详情页面我们获取传递的参数值,然后根据mid值得不一样,从服务器端获取到不同的数据展示即可
6.哈希值(HASH):#video
- 1)客户端也可以铜通过这种方式把信息传递给服务器(但是一般不用)
- 2)锚点定位
- 3)通过HASH值实现页面的路由切换
HTTP事物
- REQUEST 请求阶段
- RESPONSE 响应阶段
两个阶段都完成这件事才算完成,也就是完成了一个HTTP事物
HTTP报文(发送给服务器的内容和返回给客户端的内容统称为报文)
- 起始行,请求起始行,响应起始行
- 首部:请求首部、响应首部、通用首部(请求和响应都有的)、自定义首部
- 主体:请求主体、响应主体
Request Headers(请求头:客户端设置,服务器端获取)
- GET /getList?_=0.19020438256316052 HTTP/1.1 ->请求起始行
- Host: 192.168.1.100:81 ->请求首部
- Connection: keep-alive
- Cache-Control: max-age=0
- User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2679.0 Safari/537.36
- Accept: /
- Referer: http://192.168.1.100:81/index.html
- Accept-Encoding: gzip, deflate, sdch
- Accept-Language: zh-CN,zh;q=0.8
Response Headers(响应头:服务器端设置,客户端获取)
- HTTP/1.1 200 OK ->响应起始行
- content-type: application/json;charset=utf-8; ->响应首部
- Date: Wed, 17 Aug 2016 04:52:30 GMT ->服务器端返回数据的那一瞬间的服务器时间
- Connection: keep-alive
- Transfer-Encoding: chunked
Response 响应主体
服务器端返回的内容都可以在响应主体中看到(服务器端返回给客户端的内容基本上都在响应主体中,当然根据需求也会有一部分在响应头中返回给客户端)
Request Payload 请求主体
客户端如果想给服务器端传递内容,可以放在请求主体中传递给服务器,服务器接收到请求可以在请求主体中获取到内容
- 客户端也可以通过请求头把一些信息传递给服务器端
- 客户端还有一种常用的方式可以把信息传递给服务器:通过URL请求时候问号传递参数的方式
客户端 <========> 服务器端
1、客户端都可以通过哪些方式把内容传递给服务器呢?
- 1)请求URL地址后面的问号传参(很常用)
- 2)通过设置请求头信息,把内容传递给服务器 (请求头:客户端设置\服务器端获取)
- 3)通过请求主体把信息传递给服务器 (请求主体:客户端设置\服务器端获取)
2、服务器端如何把内容返回给客户端?
- 1)通过响应头把信息返回给客户端 (响应头:服务器端设置\客户端获取)
- 2)通过响应主体把信息返回给客户端 (响应主体:服务器端设置\客户端获取)
一个网页全部展示,需要向服务器发送很多的请求:
- 首先第一次请求的是HTML页面,服务器把HTML源代码返回给客户端,客户端浏览器进行渲染
- 在页面渲染过程中,如果遇到link、script、img、iframe、audio、video等这些标签,则还需要重新在向服务器发送新的请求
在谷歌浏览器控制台的Network选项中可以查看到所有的请求记录和请求信息
如果想要提高页面的加载性能(加快打开和加载的时间),我们要减少客户端的请求信息(减少HTTP请求),至少在刚开始打开页面的时候,请求次数越少,请求内容越小,可以加快页面的打开速度:
减少HTTP请求次数 && 减少HTTP请求大小
1)把CSS或者JS进行合并压缩(webpack/gulp自动化平台),保证当前页面最多只引入一个CSS和一个JS(偶尔有公共类库可以多引入一两个);如果CSS和JS代码都不是很多的时候,直接采用内嵌式,这种技巧在移动端经常使用;
2)对于静态资源图片(按钮图标或者背景图等,固定的图片)进行CSS Sprite技术;对于动态图片,我们可以做图片延迟加载;大图在保证不失真的情况下,我们可以压缩或者BASE64;
3)数据的分批异步加载
代码优化:HTML/CSS/JS这些代码都可以优化
安全优化
AJAX有关的请求协议及HTTP报文的更多相关文章
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...
- 解决ajax跨域请求 (总结)
ajax跨域请求,目前已用几种方法实现: 1)用原生js的xhr对象实现. var url="http://freegeoip.net/json/" ...
- ASP.NET MVC 实现AJAX跨域请求方法《1》
ASP.NET MVC 实现AJAX跨域请求的两种方法 通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据 ...
- ajax跨域请求学习笔记
原文:ajax跨域请求学习笔记 前言 ajax,用苍白的话赞扬:很好. 我们可以使用ajax实现异步获取数据,减少服务器运算时间,大大地改善用户体验:我们可以使用ajax实现小系统组合大系统:我们还可 ...
- ASP.NET MVC 实现AJAX跨域请求的两种方法
通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据的加载,例如Google. 在ASP.NET MVC 框 ...
- jsonp其实很简单【ajax跨域请求】
js便签笔记(13)——jsonp其实很简单[ajax跨域请求] 前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资 ...
- ajax跨域请求解决方案
大家好,今天我们学习了js的跨域请求的解决方案,由于JS中存在同源策略,当请求不同协议名,不同端口号.不同主机名下面的文件时,将会违背同源策略,无法请求成功!需要进行跨域处理! 方案一.后台PHP进行 ...
- 几种常用的ajax 跨域请求
前 言 首先,我们要明白,什么是跨域,为什么要跨域. 由于JS中存在同源策略.当请求不同协议名不同端口号下面的文件时,将会违背同源策略,无法请求成功!需要进行跨域处理! 这篇文章就为大家详细介绍一 ...
- ajax跨域请求のJSONP
简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式. JSON的优点: 1.基于纯文本,跨平台传递极其简单: 2.Javascript原生支持,后台语言几乎全部支持: 3.轻量级 ...
随机推荐
- Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得
原文:Linux 桌面玩家指南:18. 我对 Docker 的使用的学习心得 特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记 ...
- HttpComponents入门解析
1 简介 超文本传输协议(http)是目前互联网上极其普遍的传输协议,它为构建功能丰富,绚丽多彩的网页提供了强大的支持.构建一个网站,通常无需直接操作http协议,目前流行的WEB框架已经透明的将这些 ...
- MongoDB + node-mongoskin简单演示样例
特点 无模式 MongoDB 中的每一条文档,都是一个 JSON 对象,因此你无需提前定义一个集合的结构,集合中的每一个文档也能够有不同的结构. 异步写入 MongoDB 默认全部的写操作都是『不安全 ...
- 第二天,导出文件sql,查询,视图view,聚合函数,反模式,字符串处理函数
//把数据库导出到脚本文件mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql CREATE TABLE stud( id INT PRI ...
- Vue项目自动转换 px 为 rem,高保真还原设计图
技术栈 vue-cli:使用脚手架工具创建项目. postcss-pxtorem:转换px为rem的插件. 自动设置根节点html的font-size 因为rem单位是相对于根节点的字体大小的,所以通 ...
- 洛谷P3383 【模板】线性筛素数(Miller_Rabin)
题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行 ...
- read---读取变量值
read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开.在read命令后面,如果没有指定变量名,读取的数据将被自 ...
- 洛谷——P1311 选择客栈
https://www.luogu.org/problem/show?pid=1311 题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰 ...
- Onsctl 配置ONS服务(10G)
Onsctl Onsctl这个命令是用来管理ONS(Oracle Notification Service)是OracleClustser实现FAN Event Push模型的基础. 在RAC环境下. ...
- LeetCode 136 Single Number(仅仅出现一次的数字)
翻译 给定一个整型数组,除了某个元素外其余元素均出现两次. 找出这个仅仅出现一次的元素. 备注: 你的算法应该是一个线性时间复杂度. 你能够不用额外空间来实现它吗? 原文 Given an array ...
