# 6、前后端的通信方式以及HTTP
# 前后端需要用的技术
TIP
需要用到的技术栈 [前端]
HTML(5)+CSS(3)
JAVAscript
[后端]
java
Node
PHP
C#
C
[数据库]
mySQL
SQL Server
mongodb
(和node结合紧密)
[自动化]
git、svn
weboack
(基于NODE运行的)
服务器部署工具 iis、apache、nginx
# 前端和后端是如何通信的
TIP
前端:客户端
后端:服务器端
前后端通过HTTP
协议进行通信;
所谓的全栈,其实是你可以实现客户端和服务器端程序的编写,而且还可以实现两端之间的通信
# 什么是内网IP
内网(局域网:具备相同的
DNS
和默认网关,并且由相同的路由器下发的IP
,限定在一定区域内访问的)自测:自己开发测试
内测:上传到公司内网测试服务器上,交由公司测试进行BUG追踪
公测:产品正式部署到外网服务器上
# 什么是外网IP
外网是不管是不是在同一个网段,用户都可以通过外网IP访问到你的服务器(一般我们会在服务器上做处理,禁止直接通过
IP
访问)
# 如何把本地文件上传到服务器
通过
FTP
把自己本地的项目文件上传到服务器执行的目录中(filezilla:ftp
上传文件工具)
DNS
服务器 域名解析服务器域名和服务器关联在一起,是通过DNS解析完成的,所谓
DNS
解析就是在DNS
服务器上生成了一条解析记录,标注了子域名和对应的服务器的外网IP
地址;
# URL/URI/URN
URI
:统一资源标识符
URL
:统一资源路径地址
URN
:统一资源名称
URI = URL + URN
统一资源标识符(统一资源信息)一个完整的URL包含很多部分:
http://v.qq.com:80/index.html?name=ceshi&age=7#bbs
# 传输协议
TIP
客户端传递给服务器端的内容和服务器端传递给客户端的内容都是通过HTTP
传输协议进行传输的(可以把HTTP
理解为快递小哥)
- 1、客户端不仅可以向服务器发送请求,而且还可以把一些内容传递给服务器
- 2、服务器端也可以把内容返回给客户端
客户端请求的内容和服务器端响应的内容总称为 HTTP报文 。这些报文信息都是基于传输协议完成传输的,客户端传递给服务器叫做请求(Request
),服务器返回给客户端叫做响应(Respone
),request+response
两个阶段统称为HTTP事务(事务:一件完整的事情)
HTTP事务:
- 1、当客户端向服务器端发送请求,此时客户端和服务器端会建立一个传输通道(链接通道),传输协议就是基于这个通道把信息进行传输的
- 2、当服务器端接收到请求信息,把内容返回给客户端后,传输通道会自动销毁关闭;
# 传输协议分类
TIP
http
:超文本传输协议
- 客户端和服务器端传输的内容除了文本以外,还可以传输图片、音视频等文件流[二进制编码、BASE64码],以及传输XML格式的数据等),是目前市场上应用最广泛的传输协议;
https:http + ssl
- 它比
http
更加安全,因为数据内容的传输通道是经过ssl
加密的(它需要在服务器端进行特殊的处理),所以涉及资金类的网站一般都是https
协议的
ftp
:资源文件传输协议
- 一般用于客户端把资源文件(不是代码)上传到服务器端,或者从服务器端下载一些资源文件(一般
ftp
传输的内容会比http
这类协议传输的内容多)
# HTTP报文
HTTP报文
客户端请求的内容和服务器端响应的内容总称为HTTP报文 包括以下部分:
- 1、起始行
- 请求起始行
- 响应起始行
- 2、首部(头)
- 请求头:内置请求头、自定义请求头
- 响应头:内置响应头、自定义响应头
- 通用头:请求和响应的都有
- 3、主体
- 请求主体
- 响应主体
请求xxx都是客户端设置的信息,服务器端获取这些信息; 响应xxx都是服务器端设置的信息,客户端获取这些信息;
在谷歌浏览器控制台NetWork中选项中,我们可以看见当前客户端和服务器端交互的全部信息;
客户端向服务器端传递数据的3种方式
- 1、URL问号传参
- 2、设置请求头
- 3、设置请求主体
服务器端返回给客户端数据的2种方式
- 1、设置响应头(例如服务器时间)
- 2、设置响应主体
# 域名
域名分类
设置域名其实就给不好记忆的服务器外网IP
设置了一个好记忆的名字
根域名:com、cn……
顶级域名(一级域名):qq.com
二级域名:www.qq.com、v.qq.com、sports.qq.com ...
三级域名:kbs.sports.qq.com
# 端口号
域名分类
在服务器上发布项目的时候,我们用端口号来区分不同的项目
一台服务器的端口号范围:0~65535
如果电脑上安装了很多程序,有一些端口号是被占用了
HTTP
默认端口号:80
HTTPS
默认端口号:443
FTP
默认端口号:21
对于上述三个端口号是很重要的,如果被其他程序占用,我们则不能使用了;所以服务器上一般是禁止安装其他程序的;
# 请求资源文件的路径名称
在服务器中发布项目的时候,我们一般都会配置一些默认文档:用户及时不输入请求文件的名称,服务器也会找到默认文档(一般默认文档都是index/default...);
我们通常为了做
SEO
优化,会把一些动态页面的地址进行伪URL
重写(服务器处理),把动态的URL
地址重写为静态的URL
地址,利于爬虫抓取
# 问号传参
Url传参
?name=zf&age=9
把一些值通过xxx=xxx的方式,放在一个URL
的末尾,通过问号传递;
[作用]
- 1、在AJAX请求中,我们可以通过问号传递参数的方式,客户端把一些信息传递给服务器,服务器根据传递信息的不一样,返回不同的数据;
- 2、消除AJAX请求中GET方式的缓存:比如
http://www.xxxxx.com/index.html
http://www.xxxxx.com/index.html?test123123
两个url
打开的页面一样,但是后面这个有问号,说明不调用缓存的内容,而认为是一个新地址,重新读取。 - 3、通过
URL
传参的方式,可以实现页面之间信息的通讯,例如:我们有两个页面A/B,A是列表页面,B是详情页,点击A中的某一条信息,进入到唯一的详情页B,可以通过URL
传递不同得参数来获取不同的数据;
# 哈希值
哈希
URL
末尾传递的井号什么,就是HASH
值(哈希值)
作用: 1、页面中锚点定位 2、前端路由(SPA单页面开发)
← 5、浏览器缓存 7、前端URL参数获取 →