http
2016-11-07 18:47:13 0 举报
AI智能生成
HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网的数据通信的基础。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的协议。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个客户端-服务器协议:请求由一个实体(用户代理或浏览器)启动,然后被发送到服务器上。服务器接收到请求后,将生成一个响应并发送给请求者。这个过程通常被称为”获取资源”。
作者其他创作
大纲/内容
综合问题
测试工具
profiler
JSperf
Dromaeo
内存泄露
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
1. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
2. 闭包
3. 控制台日志
4. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
判断脚本运行环境
判断Global对象是否为window,如果不为window,当前脚本没有在浏览器中
优雅降级和渐进增强
1. 优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效。
2. 渐进增强:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。
页面加载过程
分为4个步骤:
1. 当发送一个 URL 请求时,不管这个 URL 是 Web 页面的 URL 还是 Web 页面上每个资源的 URL,浏览器都会开启一个线程来处理这个请求,同时在远程 DNS 服务器上启动一个 DNS 查询。这能使浏览器获得请求对应的 IP 地址。
2. 浏览器与远程 Web 服务器通过 TCP 三次握手协商来建立一个 TCP/IP 连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。
3. 一旦 TCP/IP 连接建立,浏览器会通过该连接向远程服务器发送 HTTP 的 GET 请求。远程服务器找到资源并使用 HTTP 响应返回该资源,值为 200 的 HTTP 响应状态表示一个正确的响应。
4. 此时,Web 服务器提供资源服务,客户端开始下载资源。
请求返回后,便进入了我们关注的前端模块
简单来说,浏览器会解析 HTML 生成 DOM Tree,其次会根据 CSS 生成 CSS Rule Tree,而 javascript 又可以根据 DOM API 操作 DOM
安全性问题
1. XSS
2. sql注入
3. CSRF:是跨站请求伪造,很明显根据刚刚的解释,他的核心也就是请求伪造,通过伪造身份提交POST和GET请求来进行跨域的攻击
完成CSRF需要两个步骤:
1. 登陆受信任的网站A,在本地生成 COOKIE
2. 在不登出A的情况下,或者本地 COOKIE 没有过期的情况下,访问危险网站B。
浏览器问题
并行下载资源
事件处理机制
1. 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为
2. 事件处理机制:IE是事件冒泡、firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件
3. ev.stopPropagation();
注意旧ie的方法:ev.cancelBubble = true;
阻塞
62
WEB应用从服务器主动推送Data到客户端
1. html5 websocket
2. WebSocket 通过 Flash
3. XHR长时间连接
4. XHR Multipart Streaming
5. 不可见的Iframe
6. <script>标签的长时间连接(可跨域)
HTTP
状态码
2
200 OK 请求已经成功,请求所希望的响应头或数据体将随此响应返回
201 create 请求已经被实现,而且一个新的资源已经依据请求的需要建立,且其URL已经随location头信息返回
202 Accepted 服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行,在异步操作的场合下最合适。
返回202状态码的响应的目的是允许服务器接受其他过程的请求(例如某个每天只执行一次的基于批处理的操作),不必让客户端一直保持与服务的连接直到批处理全部完成。
在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户能够估计操作是否已经完成。
返回202状态码的响应的目的是允许服务器接受其他过程的请求(例如某个每天只执行一次的基于批处理的操作),不必让客户端一直保持与服务的连接直到批处理全部完成。
在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户能够估计操作是否已经完成。
203 Non-authoritative Infomation 服务器已经成功处理了请求,在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户能够估计操作是否已经完成。
204 no content
3
301 Moved Permanently 请求的网页已永久的移动到新的位置
302 found 临时性重定向
303 see other 临时性重定向,且总是使用GET请求新的URL
304 not Modified 自上次请求后,请求的网页未修改过
4
400 bad request 服务器无法理解请求格式,客户端不应该尝试再次发起相似的请求
401 unauthorized 请求未经授权
403 forbidden 禁止访问
404 not found 找不到如何与url相匹配的资源
5
500 internal server error 常见的服务器端错误
503 service unavailable 服务端暂时无法处理请求(可能是过载或维护)
get和post
get:一般用于信息授权,使用url传递参数,对所发送的信息数量也是有限制的,一般在2000个字符
需要使用request.queryString来获取变量的值
通过地址栏来传值的
需要使用request.queryString来获取变量的值
通过地址栏来传值的
post:一般用于修改服务器上的资源,对所发送的信息没有限制
通过request.form来获取变量的值
通过提交表单来传值
通过request.form来获取变量的值
通过提交表单来传值
get请求返回的内容可以被浏览器缓存起来,每次提交的post,浏览器在刷新的时候都会跳出确认框,浏览器不会缓存post请求返回的内容
下列情况使用post
1、无法使用缓存文件,更新服务器上文件或数据库
2、向服务器发送大量数据,post没有数据量的限制
3、发送包含未知字符的用户输入时,post比get更稳定可靠
1、无法使用缓存文件,更新服务器上文件或数据库
2、向服务器发送大量数据,post没有数据量的限制
3、发送包含未知字符的用户输入时,post比get更稳定可靠
安全性:
get是安全的,因为其方法不会改变服务器端是数据,所以不会产生副作用
post是安全的:get在url里面显示参数会引发一些安全问题
get是安全的,因为其方法不会改变服务器端是数据,所以不会产生副作用
post是安全的:get在url里面显示参数会引发一些安全问题
HTTP协议
与服务器交互的方法:get post put delete 查 改 增 删
http 请求格式:request line, headers、blank line、request-body
http 响应格式:status line,header,blank line、request-body
http 头
Expires 应该在什么时候认为文档已经过期,从而不再缓存它?
ETag为“被请求变量的实体值”。另一种说法是,ETag是一个可以与Web资源关联的记号(token)
Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。
Expires 头部字段提供一个日期和时间,响应在该日期和时间后被认为失效。允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。
Expires = "Expires" ":" HTTP-date
例如:
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式)
如果把它设置为-1,则表示立即过期
Expires 和 max-age 都可以用来指定文档的过期时间,但是二者有一些细微差别
1. Expires在HTTP/1.0中已经定义,Cache-Control:max-age在HTTP/1.1中才有定义,为了向下兼容,仅使用max-age不够
2. Expires指定一个绝对的过期时间(GMT格式),这么做会导致至少2个问题:
2.1客户端和服务器时间不同步导致Expires的配置出现问题。
2.2很容易在配置后忘记具体的过期时间,导致过期来临出现浪涌现象
3. max-age 指定的是从文档被访问后的存活时间,这个时间是个相对值(比如:3600s),相对的是文档第一次被请求时服务器记录的Request_time(请求时间)
4. Expires 指定的时间可以是相对文件的最后访问时间(Atime)或者修改时间(MTime),而max-age相对对的是文档的请求时间(Atime)
5. 如果值为 no-cache,那么每次都会访问服务器。如果值为max-age,则在过期之前不会重复访问服务器。
内容安全策略 (CSP, Content Security Policy) 是一个附加的安全层,用于帮助检测和缓解某些类型的攻击,包括跨站脚本 (XSS) 和数据注入等攻击。 这些攻击可用于实现从数据窃取到网站破坏或作为恶意软件分发版本等用途。
新的技术
1. Node.js
2. Mongodb
3. npm
4. MVVM
5. MEAN
6. three.js
7. React
0 条评论
下一页