1.如何搭建博客?javascript
- 能够利用第三方平台
- 发布到github上(只能发布静态页面)
- 本身购买域名和服务器,而后进行页面优化和推广
2.利用购买域名和服务器的方式搭建博客css
- 买(租)服务器 (阿里云买服务器) 有了服务器后经过ftp(FileZilla)将本地项目传送到服务器上
- 购买域名 (万网) 经过DNS数据库解析域名,将域名和服务器IP地址绑定 www.baidu.cn 125.39.174.202
- 开发项目,把项目发布到对应的端口号(0~65535)的服务器的内存里
- 在浏览器的地址栏中输入url地址并按回车,这个过程发生了什么?
- 经过http协议 客户端向服务器端发起请求
- 查看url中的域名,将域名解析成服务器ip地址,找到对应的服务器
- 查看端口号,找到对应的服务,在这个服务中经过路径找到对应的页面
- 服务器将对应的内容经过response响应返回给客户端
- 客户端拿到数据后,按照以下步骤将数据在页面显示出来
- 1.将全部标签生成DOM Tree
- 2.代码自上而下执行,当遇到 script/link/img...会按照上面步骤从新向服务器发起请求
- 3.进行动态绑定数据(ejs模板 <%=.. >,字符串拼接的方式)处理
- 4.浏览器进行渲染和绘制
什么是http事务?客户端请求+服务器响应成功,这样完整过程称为一条http事务
客户端向服务器发起请求时会携带一些数据,服务器端响应时也会向客户端发送一些数据,这些数据详细的信息称为http报文html
详细讲解url地址 URL:统一资源定位符 URI:统一资源标识符 (一般指的就是URL) URN:统一资源名称 (用的不多) URI = URL+URN前端
1.协议 www.baidu.cn/course/inde… http 超文本传输协议 默认端口号 80 https http+ssL 多了一个加密协议(一般网站涉及到支付或者用户隐私等) 默认端口号8080 ftp 文件传输协议 (将本地项目传输到服务器上) 默认端口号 21html5
2.域名 www.baidu.cn 一级域名 online.baidu.cn 二级域名 html5train.online.baidu.cn 三级域名java
3.端口号 至关于房间号 范围是0~65535nginx
- 路径 (端口号后面,问号前面) 经过路径从服务器查找到对应的文件 /course/index.html
5.问号传参 格式:key = value 每个参数之间以&链接 ?name=zf&age=9
1.把客户端数据经过传参方式发送给服务器端 2.让服务端返回指定参数的数据git
6.hash值 (跟http事务无关,跟锚点定位或路由跳转有关) js获取:window.location.hashgithub
【http报文组成】web
- General 通用首部
- Request URL: www.baidu.cn/ 请求的地址
- Request Method: GET 请求的方式
- Status Code: 200 OK http状态码
- Remote Address: 125.39.174.202:80 主机的ip地址和端口号 2.Request Headers 请求头
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8 接收的数据格式
- Accept-Encoding: gzip, deflate 压缩的格式
- Accept-Language: zh-CN,zh;q=0.9 语言
- Cache-Control: no-cache 不缓存
- Connection: keep-alive 长连接
- Cookie: __cfduid=d11b7d024136e2b856679f99aaedeeedf1538033148; __root_domain_v=.baidu.cn; _qddaz=QD.dgi18u.qwjmzi.jmk98609; pgv_pvi=3035234304; tencentSig=9047068672; _qdda=3-1.1; Hm_lvt_5ca1e1efc366a109d783a085499d59d9=1539656707,1539749036,1540029419,1540260952; Hm_lvt_24b7d5cc1b26f24f256b6869b069278e=1540260983; Hm_lvt_418b1c90fa35dc210dd5d2284d9f9f29=1539746411,1540029388,1540259896,1540262296; _qddab=3-qcrur5.jnl4ei2u; IESESSION=alive; pgv_si=s2276654080; Hm_lpvt_418b1c90fa35dc210dd5d2284d9f9f29=1540265546; - _qddamta_2852156370=3-0 记录一些信息,会发送到服务器端
- Host: www.baidu.cn 域名
- Pragma: no-cache
- Upgrade-Insecure-Requests: 1
- User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 浏览器信息
3.Response Headers 响应头
- Connection: keep-alive 长连接
- Content-Encoding: gzip 压缩的格式
- Content-Type: text/html 响应的数据格式
- Date: Tue, 23 Oct 2018 03:41:30 GMT 服务器端响应式时间 格林尼治时间
- Last-Modified: Wed, 19 Sep 2018 08:41:34 GMT 缓存有关
- Server: yunjiasu-nginx 经过nginx启动web服务
4.请求主体和响应主体
ajax(async javascript and xml)
-【请求的方式】
-
GET 向服务器获取响应的内容
-
HEAD 向服务器获取响应头的内容
-
DELETE 让服务器删除某些内容
-
POST 把发送的内容放在请求主体里发送给服务器 经过增长内容时用post方式
-
PUT 把发送的内容放在请求主体里发送给服务器,返回的状态只有202
-
一般修改内容用put方式
-
OPTIONS 是一种探测性请求,客户端和服务器端链接后,查看服务器端支持的请求方式有哪些,而后再发起支持请求方式的请求
-
【get系列】
-
【post系列】
-
【get系列请求方式和post请求方式有什么不一样】
-
get系列数据是放在url地址后面发送给服务器,post系列是把数据放在请求体里发送给服务器
-
发送的数据大小有区别,get系列 chrome 8kb firefox 7kb ie 2kb post系列没有大小限制
-
get系列会有缓存问题,post系列没有
-
post系列请求方式比get系列请求方式安全写,get系列的数据因为放在url地址,有可能数据会被劫持
-
xhr.readyState 请求状态状态码
- 0 UNSENT 建立ajax对象,还未发送请求
- 1 OPENDED 设置请求的地址 执行open后再获取 发送请求
- 2 HEADERS_RECEIVED 返回响应头的内容
- 3 LOADING 响应主体的内容正在返回
- 4 DONE 响应成功,数据所有返回
-
xhr.status http状态码
-
2XX 响应成功
-
3XX - 301 永久转移 (例如:更改域名,当你仍是访问老的域名时,永远转移到新域名地址) - 302 临时转移
例如:通常用在服务器超负荷运载,当用户访问量超过服务器所能承载状态时,后期访问的用户临时转移到其余服务器上 ,又例如:会把图片临时转移到其余服务器上,以减轻这个服务器的压力 - 307 临时重定向
例如以前网站协议是http,后期更改为了https协议,当用户访问仍是http协议时会临时重定向到https协议
- 304 客户端向服务器端发送请求时,服务端接收请求后,要判断下以前有没有返回过,若返回过,直接返回304,让客户端从缓存中获取数据。从缓存中获取数据比从服务器获取数据快不少 从缓存中获取数据有可能获取的不是最新数据,若想每次获取的都是最新数据,在请求的地址后面加一个随机数,例如: www.baidu.cn/wechat/inde… Math.random();
-
4XX 【客户端问题】
- 400 参数错误
- 401 权限不够
- 404 地址错误,页面找不到
-
5XX 【服务器端问题】
xhr的属性和方法
- xhr.onabort() 停止请求
- xhr.ontimeout = function(){} 设置超时后作些事情
- xhr.timeout = 5000 设置超时时间
- xhr.readyState 请求状态码
- xhr.response 目前各个浏览器还有兼容性问题
- xhr.responseText 获取响应的数据(string)
- xhr.responseXML xml格式的数据
- xhr.status http状态码
- xhr.statusText 状态码的描述信息
- xhr.withCredentials 是否容许跨域 true容许 false 不容许
- xhr.getAllResponseHeaders() 获取全部的响应头
- xhr.getResponseHeader() 获取指定的响应头
- xhr.overrideMimeType 重写mime类型
先后端交互调试bug
- NetWork 下
- All 全部请求的地址
- XHR 经过ajax发送的请求,也就是全部的接口地址
- JS 请求的js文件
- css 请求的css文件
- media 音视频
复制代码
- font 字体图标 职责问题 哪些属于前端问题,哪些属于后端问题
- 问号传参,传的参数错误 [前端问题]
- 请求体的数据提交错误(接口文档会指定key,而value就是客户端须要提交内容) 【前端问题】
- 请求接口地址错误[前端问题]
- 服务端返回数据错误或者返回的数据跟接口文档指定的不同[后端的问题]
- 返回状态码5XX [后端的问题]