网络问的原理太多,复习没有到位导致答不上来。(哭)
1. http状态码,301和302有什么区别
参考https://blog.csdn.net/baidu_30000217/article/details/71189314
详细来说,301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。
他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
网址劫持:从网站A(网站比较烂)上做了一个302跳转到网站B(搜索排名很靠前),这时候有时搜索引擎会使用网站B的内容,但却收录了网站A的地址,这样在不知不觉间,网站B在为网站A作贡献,网站A的排名就靠前了。
301跳转对查找引擎是一种对照驯良的跳转编制,也是查找引擎能够遭遇的跳转编制,它告诉查找引擎,这个地址弃用了,永远转向一个新地址,可以转移新域名的权重。而302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。
- 304缓存的过程,强缓存会发送请求吗?
a. 先看有没有匹配强缓存?匹配的话不用请求直接使用缓存,返回200
b. 再看有没有匹配If-None-Match,匹配就返回304,否则返回200.
c. b项没有这个字段时,判断是否匹配If-Modified-Since,匹配就返回304
-
跨域怎么解决?
JSONP(script的src可以跨域的漏洞)、CORS、代理 -
websocket用的什么协议,为什么它可以跨域?
TCP协议,HTTP和Websocket是基于TCP协议的两个不同的协议。
websocket没有同源策略的限制,因此可以跨域。
https://www.cnblogs.com/nnngu/p/9347635.html
WebSocket 的其他特点:
- 建立在 TCP 协议之上,服务器端的实现比较容易。
- 与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
- 数据格式比较轻量,性能开销小,通信高效。
- 可以发送文本,也可以发送二进制数据。
- 没有同源限制,客户端可以与任意服务器通信。
- 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
- http跟网络安全相关的headers有哪些?
字段 | 描述 | 语法 |
---|---|---|
X-Content-Type-Options | HTTP响应首部相当于一个提示标志,服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改。 | X-Content-Type-Options:nosniff |
Access-Control-Allow-Origin | 响应头指定了该响应的资源是否被允许与给定的origin共享。跨原始资源共享(CORS)允许网站在它们之间共享内容 | Access-Control-Allow-Origin: http://10.10.10.10 |
X-XSS-Protection | 当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。 | X-XSS-Protection: 0 |
HTTP Strict Transport Security(HSTS) | 它告诉浏览器只能通过HTTPS访问当前资源,而不是HTTP。 | Strict-Transport-Security: max-age=expire-time |
Content Security Policy | CSP是一个计算机的安全标志,主要用来防止XSS、点击劫持、SQL注入等攻击;CSP通过定义运行加载脚本的位置和内容防止恶意代码的加载。 | Content-Security-Policy:policy |
https://blog.csdn.net/haoren_xhf/article/details/80585168
1、强制使用https传输,HTTP Strict Transport Security (HSTS)
在各种劫持小广告+多次跳转的网络环境下,可以有效缓解此类现象。同时也可以用来避免从https降级到http攻击(SSL Strip)
服务器设置响应头:Strict-Transport-Security: max-age=31536000 ; includeSubDomains 即可开启
2、HTTPS证书绑定,Public Key Pinning Extension for HTTP (HPKP)
浏览器依据证书链认证https证书,任何合法证书链均可以给某个域名(baidu.com)颁发一个https证书。如果要提高安全性,减少中间人攻击,我们可以明确指定证书指纹提供给浏览器进行身份验证
服务器设置响应头:Public-Key-Pins: pin-sha256=“d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=”; pin-sha256=“E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=”; report-uri=“http://example.com/pkp-report”; max-age=10000; includeSubDomains
3、跨站XSS防护,X-XSS-Protection
开启浏览器端的xss防护,减少反射xss对用户的危害(chrome浏览器默认开启)
服务器配置响应头:X-XSS-Protection: 1; mode=block / 1; report=http://[YOURDOMAIN]/your_report_URI
4、阻止网站被嵌套,X-Frame-Options
网站被嵌套,可能出现clickhijacking等攻击
服务器配置响应头:X-Frame-Options: deny/sameorigin/allow-from: DOMAIN
5、配置多种安全策略,Content-Security-Policy
可以定义许多安全策略,script-src,frame-src ,referrer等
服务器配置响应头:Content-Security-Policy: script-src ‘self’
6、响应内容探测,X-Content-Type-Options
有些服务器响应内容未设置content-type,浏览器会自动检测内容type(MIME自识别),会出现编码相关的安全问题(IE和chrome会忽略content-type 自行推测网页格式、编码等,会出现IE的utf-7 xss绕过等bug)
服务器配置响应头:X-Content-Type-Options: nosniff
- cookie跟安全相关的headers有哪些?
字段 | 描述 |
---|---|
HttpOnly | 一个有HttpOnly属性的Cookie,不能通过非HTTP方式来访问。例如通过调用JavaScript(例如,引用document.cookie) |
Same-Site | 为了防止CSRF(Cross-site request forgrey)攻击,可以使用SameSite属性。strict:浏览器在任何跨域请求中都不会携带Cookie,这样可以有效的防御CSRF攻击,但是对于有多个子域名的网站采用主域名存储用户登录信息的场景,每个子域名都需要用户重新登录,造成用户体验非常的差。lax:相比较strict,它允许从三方网站跳转过来的时候使用Cookie。 |
服务端Set-Cookies: Http-Only,
secure : 表示cookie只能被发送到http服务器。
httponly : 表示cookie不能被客户端脚本获取到。
- js闭包的原理?为什么会内存泄露?
- js垃圾回收机制?引用计数有什么缺点?(循环引用)
- css垂直居中的方法
- 移动端适配的方法 ?
- 优化移动端性能的方法?
- 前端遇到bug怎么处理?如何调试?
- 怎么考虑电脑端和移动端的响应式设计?
- 数据量很大,前端怎么提高性能?
- 怎么修改网站皮肤?
动态修改link标签