JavaScript面试重点:HTTP状态码、GET与POST区别、AJAX解析

需积分: 9 0 下载量 143 浏览量 更新于2024-08-04 收藏 28KB MD 举报
"02.js---面试.md" 面试是评估求职者技能的重要环节,特别是对于JavaScript开发者来说,了解HTTP状态码、GET与POST请求的区别、AJAX的基本操作以及处理兼容性问题和理解跨域机制是非常关键的。以下是这些知识点的详细说明: ### 一、HTTP状态码 HTTP状态码是服务器向客户端传递的一种反馈,表示请求的处理结果。常见的状态码包括: - **200 OK**:请求成功,服务器已理解请求并按要求执行。 - **304 Not Modified**:如果客户端发送了一个带条件的GET请求(比如If-Modified-Since头),而服务器告诉客户端,资源自上次请求后未发生任何变化。 - **403 Forbidden**:服务器理解了请求,但拒绝执行。这可能是因为权限不足或其他安全原因。 - **404 NotFound**:服务器找不到请求的资源,通常是因为URL错误。 - **500 Internal Server Error**:服务器遇到了一个意外情况,导致无法完成请求。 - **503 Service Unavailable**:服务器当前无法处理请求,可能是因为过载或维护,通常在一段时间后会恢复。 ### 二、GET与POST的区别 - **GET**:主要用于获取数据,URL中显示请求参数,有长度限制,通常不安全,因为数据可见,且存在缓存问题。 - **POST**:用于发送数据,通过`send()`方法和`setRequestHeader()`设置请求头,数据在请求体中,较GET更安全,理论上无长度限制,没有缓存。 ### 三、AJAX四步曲 AJAX(异步JavaScript和XML)操作通常包括以下步骤: 1. **创建XMLHttpRequest对象**:`new XMLHttpRequest()` 创建一个XHR实例。 2. **配置请求**:`ajax.open('method', 'url', async)`,指定请求类型(如GET、POST)、URL和是否异步执行。 3. **发送请求**:`ajax.send(data)`,若为GET则不需要数据,POST需通过`send()`发送。 4. **监听响应**:`ajax.onreadystatechange` 或 `ajax.onload` 用于处理服务器返回的数据。 ### 四、兼容性处理 在JavaScript中,处理兼容性问题常用的方法有: - **if语句**:根据浏览器特性判断并执行相应代码。 - **三目运算符**:如 `condition ? expr1 : expr2`,简化条件判断。 - **或运算符||**:如 `value = value || defaultValue`,当`value`为假时,赋值`defaultValue`。 - **try...catch**:捕获并处理运行时可能出现的错误。 ### 五、跨域问题与CORS政策 - **跨域原因**:浏览器的同源策略限制了不同源的资源交互,以保障安全。 - **CORS(跨源资源共享)**:允许服务器放宽同源策略,通过`Access-Control-Allow-Origin`头来指定哪些源可以访问其资源。当缺少此头时,浏览器会报错“No 'Access-Control-Allow-Origin'”。 了解并熟练掌握以上知识点,对于JavaScript面试和实际开发工作都至关重要。

ERROR Failed to compile with 48 errors 上午10:53:54 These dependencies were not found: * core-js/modules/es.array.push.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/components/HeaderSearch/index.vue?vue&type=script&lang=js& and 29 others * core-js/modules/es.error.cause.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/layout/components/Navbar.vue?vue&type=script&lang=js& and 5 others * core-js/modules/es.object.proto.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js * core-js/modules/es.regexp.dot-all.js in ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/components/ThemePicker/index.vue?vue&type=script&lang=js&, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/layout/components/Navbar.vue?vue&type=script&lang=js& and 2 others * core-js/modules/web.url-search-params.delete.js in ./src/utils/request.js * core-js/modules/web.url-search-params.has.js in ./src/utils/request.js * core-js/modules/web.url-search-params.size.js in ./src/utils/request.js * qs in ./src/utils/request.js * svg-baker-runtime/browser-symbol in ./src/icons/svg/user.svg To install them, you can run: npm install --save core-js/modules/es.array.push.js core-js/modules/es.error.cause.js core-js/modules/es.object.proto.js core-js/modules/es.regexp.dot-all.js core-js/modules/web.url-search-params.delete.js core-js/modules/web.url-search-params.has.js core-js/modules/web.url-search-params.size.js qs svg-baker-runtime/browser-symbol怎么解决如何安装

2023-07-21 上传