blog
blog copied to clipboard
原理题怎么答?
原理题怎么答?我带你们答。 回答流程如下:
- 如果是英文词汇就先翻译成中文
- 一句话描述该技术的用途
- 描述该技术的核心概念或运作流程
- 口述该技术的代码书写思路
- 该技术的优点
- 该技术的缺点
- 如何弥补缺点
教完了,接下来实战:
请问 AJAX 的原理是什么?
AJAX 就是异步的 JS 和 XML 的缩写,目前我们一般用 JSON 代替 XML。AJAX 主要用于在不刷新页面的情况下向浏览器发起请求并接受响应,最后局部更新页面。该技术最核心概念是 XMLHttpRequest 对象,该对象可发起 HTTP 请求,我们可以监听其 readystate 的变化获得响应。具体代码是这样的 blablabla优点刚才说了,无刷新请求。缺点是被浏览器限制不能跨域。想要跨越就要用到 JSONP 或 CORS 了。接下来面试官可能问 JSONP 的原理,解题思路如下:JSONP 是 json with padding 的缩写该技术通过 script 不受同源策略限制来达到跨域的目的该技术核心是前端构造 script 发起 get 请求,后端将数据放到 js 回调里,前端接受响应后执行回调拿到数据具体代码是 blablabla优点是通过简单的约定就能跨域缺点是不支持 get 以外的动词,而且存在 csrf 风险解决办法是 CORS 或 csrf token你看,按照我的步骤就能得满分。面试官可能还会再问 CORS 的原理,答题示例:CORS 是跨域资源共享的缩写该技术通过在目标域名返回 CORS 响应头来达到获取该域名的数据的目的改技术核心就是设置 response header,分为简单请求和复杂请求两种简单请求只需要设置 Access-Control-Allow-Origin: 目标源 即可,复杂请求则分两步走,第一步是浏览器发起 OPTIONS 请求,第二步才是真实请求。OPTIONS 请求需要把服务器支持的操作通过响应头来表明,如 Access-Control-Allow-Methods: POST, GET, OPTIONS,另外一个重要的响应头是 Access-Control-Allow-Credentials: true 用来表明是否接受请求中的 Cookie。blablabla优点是通过简单的配置就能跨域缺点是某些古老浏览器不支持 CORS 或不支持 Credentials解决办法是用 JSONP 或 P3P 等技术又满分了。