web面试之网络
2017-09-26 本文已影响16人
西兰花伟大炮
(1)缓存
304状态码是对客户端有缓存情况下服务端的一种响应,客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。服务端只要判断这个时间和当前请求的文件的修改时间就可以确定是返回 304 还是 200
如果服务器在响应中设置了no-cache即Cache-Control:no-cache,那么浏览器在使用缓存的资源之前,必须先与服务器确认返回的响应是否被更改,如果资源未被更改,可以避免下载。
需要注意的是,no-cache这个名字有一点误导。设置了no-cache之后,并不是说浏览器就不再缓存数据,只是浏览器在使用缓存数据时,需要先确认一下数据是否还跟服务器保持一致。如果设置了no-cache
(2)同源策略
影响操作有
- Cookie,LocalStorage,IndexDb不能读取
- Ajax不能请求
- 另一个源的Dom不能获取
前后端如何通信?
- CORS(跨域资源共享)
- Ajax
- websocket
IE5,6使用ActiveXObject
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
跨域通信的几种方式
- JSONP
- Hash
- postMessage
- CORS
- webSocket
- 中间服务器代理转发
不受跨域影响的几个标签
- <script>
- <link>
- <img>
- <iframe>
(3)web安全
CSRF跨站请求伪造
XSS
-
xss的危害
image.png
-
xss的防范
image.png
(4)HTTP协议的特点
无连接:一次连接后会断开连接
无状态:断开后的下次连接服务器是无法知道上次与这次是相同连接
http方法
- get
- post
- head -获取报文首部
- put - 更新资源
- delete
get与post的区别
- 进行浏览器回退时,get不需要进行请求,post会重新进行请求
- get可以被收藏添加书签
- get会被浏览器主动缓存,保留get参数的历史记录
- get请求的字符长度有限制,大概2kb
- get请求通过url发送,post通过请求体进行发送