URI:统一资源标识符 URL:统一资源路径地址 URN:统一资源名称 URI = URL + URN 一个完整的URL包含很多部分: http://www.html5train.com/stu/index.html?name=zf&age=9&teacher=zxt#good
第一部分:传输协议
传输协议是用来完成客户端和服务器端的数据(内容)传输的,类似于快递小哥,负责把客户和商家的物品来回传送 1、客户端不仅可以向服务器发送请求,而且还可以把一些内容传递给服务器 2、服务器端也可以把内容返回给客户端 客户端和服务器端传输的内容总称HTTP报文,这些报文信息都是基于传输协议完成传输的,客户端传递给服务器叫做请求(request), 服务器返回给客户端叫做响应(response),request+response两个阶段统称为一个HTTP事务(事务:一件完整的事情) HTTP事务: 1、当客户端向服务器端发送请求,此时客户端和服务器端会建立一个传输通道(链接通道),传输协议就是基于这个通道把信息进行传输的 2、当服务器端接受到请求信息,把内容返回给客户端后,传输通道会自动销毁关闭 传输协议分类 http:超文本传输协议(客户端和服务器端传输的内容除了文本以外,还可以传输图片、音视频等文件流[二进制编码/BASE64码], 以及传输xml格式的数据等),是目前市场上应用最广范的传输协议 https:http ssl,它比http更加安全,因为数据内容的传输通道是经过ssl加密的(它需要在服务器端进行特殊的处理), 所以涉及资金类的网站一般都是https协议的 ftp:资源文件传输协议,一般用于客户端把资源文件(不是代码)上传到服务器端,或者从服务器端下载一些资源文件 (一般ftp传输的内容会比http这类协议传输的内容多) …
HTTP报文
1、起始行 请求起始行 响应起始行 2、首部(头) 请求头:内置请求头、自定义请求头 响应头:内置响应头、自定义响应头 通用头:请求和响应都有的 3、主体 请求主体 响应主体 请求XXX都是客户端设置的信息,服务器端获取这些信息 响应XXX都是服务器端设置的信息,客户端用来接收这些信息 在谷歌浏览器控制台Network选项中,我们可以看见当前客户端和服务器端交互的全部信息 总结: 客户端传递给服务器端数据 1、URL问号传递参数 2、设置请求头 3、设置请求主体 … 服务器端返回给客户端内容 1、设置响应头(例如服务器时间) 2、设置响应主体 …
第二部分:域名
设置域名其实就给不好记忆的服务器外网IP设置了一个好记忆的名字 顶级域名(一级域名):qq.com 二级域名:www.qq.com、v.qq.com、sports.qq.com … 三级域名:kbs.sports.qq.com …
第三部分:端口号
在服务器发布项目的时候,我们可以通过端口号区分当前服务器上不同的项目 一台服务器的端口号取值范围:0~65535之间,如果电脑上安装了很多程序,有一些端口号是被占用了 HTTP:默认端口号80 HTTPS:默认端口号443 FTP:默认端口号21 对于上述三个端口号其实是很重要的,如果被其它程序占用,我们则不能使用了;所以服务器上一般是禁止安装其它程序的;
第四部分:请求资源文件的路径名称
/stu/index.html 在服务器中发布项目的时候,我们一般都会配置一些默认文档:用户即使不输入请求文件的名称,服务器也会找到默认文档 (一般默认文档都是index/default…) 我们通常为了做SEO优化,会把一些动态页面的地址(xxx.php、xxx.aspx、xxx.asp、xxx.jsp…)进行伪URL重写(需要服务器处理的) https://item.jd.com/4325427.html 不可能是有一个商品,自己就单独写一个详情页面,肯定是同一个详情页做的不同处理 1)第一种方案: 由后台语言根据详情页模板动态生成具体的详情页面 2)第二种方案: 当前页面就是一个页面,例如:detail.html / detail.php…,我们做详情页面的时候,开发是按照 detail.html?id=4325427 来开发的;但是这种页面不方便做SEO优化,此时我们把真实的地址进行重写,重写为我们看到的 4325427.html
第五部分:问号传参
?name=zf&age=9…. 把一些值通过xxx=xxx的方式,放在一个URL的末尾,通过问号传递
[ 作用 ]
1、在AJAX请求中,我们可以通过问号传递参数的方式,客户端把一些信息传递给服务器,服务器根据传递信息的不一样,返回不同的数据
//=>$.ajax(url,{}); //=>$.get(url,function(){}); 对于AJAX请求的特殊写法,原理还是基于AJAX方法实现的 $.post / $.script ... $.ajax({ url:'getPersonInfo?id=12' ... }); //=>当前案例,我们传递给服务器的编号是多少,服务器端就会把对应编号人员信息给返回
2、消除AJAX请求中GET方式缓存
$.ajax({ url:'xxx?_=0.123456', method:'get' }); //=>我们会在请求URL的末尾追加一个随机数 _=随机数,保证每一次请求的URL都是不一样的,以此来消除GET请求遗留的缓存问题
3、通过URL传递参数的方式,可以实现页面之间信息的通信,例如:我们有两个页面A/B,A是列表页面,B是详情页,点击A中的某一条信息,进入到唯一的详情页B,如何展示不同的信息,这种操作就可以基于URL问号传递参数来实现了
例如: http://sports.qq.com/kbsweb/game.htm?mid=100000:1471087 http://sports.qq.com/kbsweb/game.htm?mid=100000:1471086 在进入到game.htm页面的时候,我们可以获取URL传递的参数值,根据传递参数值的不一样,从服务器端获取不同的数据展示 在列表页面进行页面跳转的时候,我们需要记住的是跳转的同时传递不同的参数值 <a href='game.html?mid=xxxx'>
第六部分:HASH值
#xxx URL末尾传递的井号什么,就是HASH值(哈希值) [作用] 1、页面中锚点定位 2、前端路由(SPA单页面开发)