面試題集

HTML部分

1. 你是如何理解 HTML 語(yǔ)義化的汗洒?

語(yǔ)義化是指根據(jù)內(nèi)容的結(jié)構(gòu)化(內(nèi)容語(yǔ)義化)减牺,選擇合適的標(biāo)簽(代碼語(yǔ)義化)是嗜,便于開(kāi)發(fā)者閱讀和寫出更優(yōu)雅的代碼的同時(shí),讓瀏覽器的爬蟲(chóng)和機(jī)器很好的解析步责。
標(biāo)題用h1-h5返顺。文章用artical。段落用p蔓肯。時(shí)間用time標(biāo)簽遂鹊。 header標(biāo)簽,footer標(biāo)簽,main標(biāo)簽, nav,artical標(biāo)簽。

html分的歷史階段:

  1. 后臺(tái)開(kāi)發(fā)寫前端頁(yè)面
    使用table標(biāo)簽蔗包。會(huì)出現(xiàn)table套table的窘境
  2. 美工階段
    div+css布局秉扑。不夠語(yǔ)義化。
  3. 前端階段
    語(yǔ)義化標(biāo)簽
2. meta viewport 是做什么用的调限,怎么寫舟陆?

移動(dòng)設(shè)備上的viewport就是設(shè)備的屏幕上能用來(lái)顯示我們的網(wǎng)頁(yè)的那一塊區(qū)域。比如瀏覽器的可展示區(qū)域

<meta name="viewport" content="width=device-width,initial-scale=1">

width設(shè)置layout viewport的寬度耻矮,為一個(gè)正整數(shù)秦躯,或字符串"width-device"
initial-scale設(shè)置頁(yè)面的最大縮放值,為一個(gè)數(shù)字淘钟,可以帶小數(shù)
minimum-scale允許用戶的最小縮放值宦赠,為一個(gè)數(shù)字陪毡,可以帶小數(shù)
maximum-scale允許用戶的最大縮放值米母,為一個(gè)數(shù)字勾扭,可以帶小數(shù)
height設(shè)置layout viewport的高度,這個(gè)屬性并不重要铁瞒,很少使用
user-scalable 是否允許用戶進(jìn)行縮放妙色,值為"no"或"yes"

CSS

兩種盒模型
  • box-sizing: conent-box; 將盒子設(shè)置為標(biāo)準(zhǔn)模型(盒子默認(rèn)為標(biāo)準(zhǔn)模型)
  • box-sizing: border-box; 將盒子設(shè)置為 IE 模型(也叫做怪異盒子)
content-box {  width: 100px;  height: 100px;  border: 50px solid;  padding: 50px;}

標(biāo)準(zhǔn)模型中,它在頁(yè)面中實(shí)際占有的寬高為300px
IE 模型中慧耍,它的頁(yè)面實(shí)際占有寬度還是100px身辨。由于 border + padding 已經(jīng)等于 100px 了,所以這里 content 已經(jīng)被壓縮到只剩 0 了

什么是邊距重疊
兩種現(xiàn)象
  1. 同一層相鄰元素
<style>
.box-1 {  
  width: 100px;  
  height: 100px; 
  margin-bottom: 50px; /* 會(huì)出現(xiàn)重疊芍碧。不會(huì)出現(xiàn)100px的合邊距煌珊。 只有50px;*/  
  background-color: aqua;
}
.box-2 {  
  width: 100px;  
  height: 100px;  
  margin-top: 50px;  /* 會(huì)出現(xiàn)重疊泌豆。不會(huì)出現(xiàn)100px的合邊距定庵。 只有50px;*/ 
  background-color: blueviolet;
 }
</style>
<div class="box-1"></div>
<div class="box-2"></div>
  1. 父元素和子元素之間沒(méi)有內(nèi)容
<div class="futher">
  <div class="child"></div>
</div>
<style>
  * {  margin: 0;  padding: 0;}
  .futher {  
    background: deeppink;
   }
  .child {
    margin-top: 50px;  /*父元素也會(huì)跟著有個(gè)50px的margin-top*/
    height: 100px;  
    background: deepskyblue;
  }
</style>
實(shí)現(xiàn)垂直居中

如果 .parent 的 height 不寫踪危,你只需要 padding: 10px 0; 就能將 .child 垂直居中蔬浙;

如果父元素height寫了高度

<div id="box">
    <div id="child"></div>
</div>
#box {
    width: 300px;
    height: 300px;
    background: #ddd;
    position: relative;
}
#child {
    width: 150px;
    height: 100px;
    background: orange;
    position: absolute;
    top: 50%;
    margin: -50px 0 0 0; 
}
#box {
    width: 300px;
    height: 300px;
    background: #ddd;
    position: relative;
}
#child {
    background: orange;
    position: absolute;
    top: 50%;
    transform: translate(0, -50%);
}
#box {
    width: 300px;
    height: 300px;
    background: #ddd;
    display: flex;
    align-items: center;
}
#box {
    width: 300px;
    height: 300px;
    background: #ddd;
    position: relative;
}
#child{
  background: orange;
  position: absolute;
  width: 150px;
  height: 100px;
  margin: auto;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}
水平垂直居中
  1. 水平居中

margin: 0 auto;

<div class="wrap">
    <div class="example2">
    </div>
</div>
.wrap {
    position: relative;
    background-color: orange;
    width: 300px;
    height: 300px;
}
.example2 {
    background-color: red;
    width: 100px;
    height: 100px;
    position: absolute;
    left: 50%;
    top: 50%;
    margin: -50px 0 0 -50px;
}

flex布局

<div class="warp">
  <div class="example3">
    居中顯示
  </div>
</div>
.warp {
  position: relative;
  background-color: orange;
  width: 200px;
  height: 200px;
}
.example3 {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: red;
  width: 100px;
  height: 100px;
  margin: auto;
}
.warp {
  position: relative;
  background-color: orange;
  width: 200px;
  height: 200px;
}
.example3 {
  position: relative;
  top:50%;
  transform:translateY(-50%);
  background-color: red;
  width: 100px;
  height: 100px;
  margin: 0 auto;
}
BFC

塊格式化上下文

1.給父元素overflow:hidden。那么其浮動(dòng)的子元素就會(huì)被包裹

  1. 兄弟之間劃清界限
    假設(shè)現(xiàn)在有一對(duì)兄弟 div贞远,其中一個(gè)加了浮動(dòng)畴博,那么兩個(gè) div 會(huì)重疊一部分


    4.png

如果讓另一個(gè) div 創(chuàng)建 BFC,那么這兩者就會(huì)界限分明蓝仲。


5.png
css優(yōu)先級(jí)

內(nèi)聯(lián) > ID選擇器 > 類選擇器 > 標(biāo)簽選擇器俱病。

  1. 越具體優(yōu)先級(jí)越高
  2. 寫在后面的覆蓋前面的
  3. important ! 優(yōu)先級(jí)最高。少用袱结。
清楚浮動(dòng)
.clearFix {
  content: '';
  display: block;
  clear: both;
}

js

ES6 語(yǔ)法知道哪些亮隙,分別怎么用?
  • 塊級(jí)作用域
    let變量擎勘,const常量
  • 箭頭函數(shù)
    咱揍。 默認(rèn)參數(shù)
    。 剩余參數(shù): 剩余參數(shù)語(yǔ)法允許我們將一個(gè)不定數(shù)量的參數(shù)表示為一個(gè)數(shù)組
    棚饵。 展開(kāi)運(yùn)算符: 可以展開(kāi)數(shù)組
function multiply(a, b = 1) {
  return a * b;
}

console.log(multiply(5)); // 5

function fun1(...theArgs) {
  alert(theArgs.length);
}
fun1(5, 6, 7); // 彈出 "3", 因?yàn)閠heArgs有三個(gè)元素

function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];

console.log(sum(...numbers));
// expected output: 6

[...iterableObj, '4', ...'hello', 6]; // 數(shù)組合并
  • 模板字符串
  • 對(duì)象屬性加強(qiáng)
    煤裙。 屬性定義支持短語(yǔ)法 obj = { x, y }
  • 解構(gòu)賦值
var a, b, rest;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

({ a, b } = { a: 10, b: 20 });
console.log(a); // 10
console.log(b); // 20

手寫函數(shù)防抖和函數(shù)節(jié)流
節(jié)流

一段時(shí)間執(zhí)行一次之后,就不執(zhí)行第二次

functiong fn() {}
let cd = false // 技能是否在冷卻
button.onclick = function () {
  if(cd) {
    // 在冷卻噪漾,什么也不錯(cuò)
  } else {
    fn() // 執(zhí)行函數(shù)  或者fn在setTimeout里面執(zhí)行硼砰。相當(dāng)于施法有吟唱時(shí)間
    cd = true
    setTimeout(() => {
     cd = false
    }, 3000)
  }
}
防抖

用戶在1s內(nèi)連續(xù)點(diǎn)擊兩次。只執(zhí)行最后一次欣硼。等一秒之后再執(zhí)行题翰。如果一秒內(nèi)再次觸發(fā)。則清除上次的執(zhí)行timeout

比如再拖動(dòng)窗口的時(shí)候。用戶再一秒內(nèi)可能改變了很多次窗口的大小豹障。此時(shí)我只執(zhí)行最后一次

function fn () {}
var timerId = null
button.onclick = function () {
  if(timerId) {
    window.clearTimeout(timerId)
  }
  timerId = setTimeout(() => {
    fn()
    timerId = null
  }, 1000)
}

手寫一個(gè)AJAX
function ajax() {
  let request = new XMLHttpRequest()
  request.open('get', 'https://www.google.com') // 請(qǐng)求方式和請(qǐng)求路徑
  request.onreadystatechange = () => { // 監(jiān)聽(tīng)狀態(tài)
    if (request.readyState === 4) { // 0:代理創(chuàng)建 1:open方法被調(diào)用 2:send方法被調(diào)用 3:下載中  4: 下載操作已完成
        if (request.status >= 200 && request.status <300) {
            let string = request.responseText
            let object = JSON.parse(string)
        }
    }
  }
  request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // 設(shè)置請(qǐng)求頭
  request.send(data) // 要傳的參數(shù)  可以使用JSON.stringify()和JSON.parse()進(jìn)行轉(zhuǎn)換
}

this是什么

this


閉包/立即執(zhí)行函數(shù)是什么冯事?

「函數(shù)」和「函數(shù)內(nèi)部能訪問(wèn)到的變量」(也叫環(huán)境)的總和,就是一個(gè)閉包血公。

function foo(){
  var local = 1
  function bar(){ // bar 和local就形成了閉包昵仅。此時(shí)我需要把bar返回出去。這樣外面就能方問(wèn)到里面的局部變量
    local++
    return local
  }
  return bar
}

var func = foo()
func()

或者

!function(){
  var lives = 50
  window.獎(jiǎng)勵(lì)一條命 = function(){
    lives += 1
  }
  window.死一條命 = function(){
    lives -= 1
  }
}()

在其他js文件中就能通過(guò)windown.獎(jiǎng)勵(lì)一條命等去操作局部變量 lives

(function(){alert('我是匿名函數(shù)')}) () //用括號(hào)把函數(shù)包起來(lái)
!function(){alert('我是匿名函數(shù)')}() // 求反累魔,我們不在意值是多少摔笤,只想通過(guò)語(yǔ)法檢查。 常用形式
+function(){alert('我是匿名函數(shù)')}()
-function(){alert('我是匿名函數(shù)')}()
~function(){alert('我是匿名函數(shù)')}()

立即執(zhí)行函數(shù)的作用 創(chuàng)建一個(gè)獨(dú)立的作用域垦写。

var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
  liList[i].onclick = function(){
    alert(i) // 為什么 alert 出來(lái)的總是 6吕世,而不是 0、1梯投、2命辖、3、4晚伙、5吮龄。 因?yàn)閕是全局變量
  }
}
var liList = ul.getElementsByTagName('li')
for(var i = 0; i< 6: i++) {
  !function(ii){
    liList.onclick = function() {
      alert(ii) // 0 1 2 3 4 5
    }
  }(i)
}

JSONP是什么

jsonp的核心是動(dòng)態(tài)添加<script>標(biāo)簽來(lái)調(diào)用服務(wù)器提供的js腳本。

例子一

跨域服務(wù)器
文件:remote.js
代碼:
alert('我是遠(yuǎn)程文件');

本地
<script type="text/javascript" src="跨域服務(wù)器/remote.js"></script>

例子二

跨域服務(wù)器

文件:remote.js
代碼:
localHandler({"result":"我是遠(yuǎn)程js帶來(lái)的數(shù)據(jù)"});

本地

<script type="text/javascript"> 
    var localHandler = function(data){
        alert('我是本地函數(shù)咆疗,可以被跨域的remote.js文件調(diào)用漓帚,遠(yuǎn)程js帶來(lái)的數(shù)據(jù)是:' + data.result); 
    }; 
</script> 
<script type="text/javascript" src="跨域服務(wù)器/remote.js"></script>
例子三(我需要告訴服務(wù)器我的回調(diào)名稱及參數(shù))

跨域服務(wù)器

文件:flightResult.php
代碼:
flightHandler({ "code":"CA1998", "price": 1780, "tickets": 5 });

本地

<script type="text/javascript"> 
    // 得到航班信息查詢結(jié)果后的回調(diào)函數(shù) 
    var flightHandler = function(data){
        alert('你查詢的航班結(jié)果是:票價(jià) ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 張午磁。');
    }; 
    // 提供jsonp服務(wù)的url地址(不管是什么類型的地址尝抖,最終生成的返回值都是一段javascript代碼) 
    var url = "跨域服務(wù)器/flightResult.php?code=CA1998&callback=flightHandler";
    // 創(chuàng)建script標(biāo)簽,設(shè)置其屬性 
    var script = document.createElement('script'); 
    script.setAttribute('src', url); 
    // 把script標(biāo)簽加入head,此時(shí)調(diào)用開(kāi)始 
    document.getElementsByTagName('head')[0].appendChild(script); 
</script>

CORS是什么

它允許瀏覽器向跨源服務(wù)器。
瀏覽器將CORS請(qǐng)求分成兩類:簡(jiǎn)單請(qǐng)求非簡(jiǎn)單請(qǐng)求蝎亚。

只要同時(shí)滿足以下兩大條件,就屬于簡(jiǎn)單請(qǐng)求搅荞。

  • 請(qǐng)求方法是以下三種方法之一:
    HEAD
    GET
    POST
  • HTTP的頭信息不超出以下幾種字段:
    Accept
    Accept-Language
    Content-Language
    Last-Event-ID
    Content-Type:只限于三個(gè)值application/x-www-form-urlencoded、multipart/form-data框咙、text/plain

對(duì)于簡(jiǎn)單請(qǐng)求咕痛,瀏覽器直接發(fā)出CORS請(qǐng)求。具體來(lái)說(shuō)喇嘱,就是在頭信息之中茉贡,增加一個(gè)Origin字段。
Origin字段用來(lái)說(shuō)明者铜,本次請(qǐng)求來(lái)自哪個(gè)源(協(xié)議 + 域名 + 端口)腔丧。服務(wù)器根據(jù)這個(gè)值放椰,決定是否同意這次請(qǐng)求。

GET /cors HTTP/1.1
Origin: http://api.bob.com // 來(lái)自哪里
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0...

如果Origin指定的源愉粤,不在許可范圍內(nèi)砾医,服務(wù)器會(huì)返回一個(gè)正常的HTTP回應(yīng)。瀏覽器發(fā)現(xiàn)科汗,這個(gè)回應(yīng)的頭信息沒(méi)有包含Access-Control-Allow-Origin字段(詳見(jiàn)下文)藻烤,就知道出錯(cuò)了绷雏,從而拋出一個(gè)錯(cuò)誤头滔,被XMLHttpRequestonerror回調(diào)函數(shù)捕獲。

如果Origin指定的域名在許可范圍內(nèi)涎显,服務(wù)器返回的響應(yīng)坤检,會(huì)多出幾個(gè)頭信息字段。

//它的值要么是請(qǐng)求時(shí)Origin字段的值期吓,要么是一個(gè)*早歇,表示接受任意域名的請(qǐng)求。
Access-Control-Allow-Origin: http://api.bob.com 該字段是必須的讨勤。
// 該字段可選箭跳。它的值是一個(gè)布爾值,表示是否允許發(fā)送Cookie潭千。
Access-Control-Allow-Credentials: true
withCredentials 屬性

CORS請(qǐng)求默認(rèn)不發(fā)送Cookie和HTTP認(rèn)證信息谱姓。

一方面服務(wù)器端需要同意,設(shè)置
Access-Control-Allow-Credentials: true
另一方面前端開(kāi)發(fā)設(shè)置
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

非簡(jiǎn)單請(qǐng)求

比如請(qǐng)求方法是PUTDELETE刨晴,或者Content-Type字段的類型是application/json屉来。

非簡(jiǎn)單請(qǐng)求的CORS請(qǐng)求,會(huì)在正式通信之前狈癞,增加一次HTTP查詢請(qǐng)求茄靠,稱為"預(yù)檢"請(qǐng)求(preflight)

服務(wù)器收到"預(yù)檢"請(qǐng)求以后,檢查了Origin(來(lái)源)蝶桶、Access-Control-Request-Method(請(qǐng)求方法)和Access-Control-Request-Headers(額外發(fā)送的頭信息)字段以后慨绳,確認(rèn)允許跨源請(qǐng)求,就可以做出回應(yīng)真竖。

一旦服務(wù)器通過(guò)了"預(yù)檢"請(qǐng)求脐雪,以后每次瀏覽器正常的CORS請(qǐng)求,就都跟簡(jiǎn)單請(qǐng)求一樣

深拷貝
JSON.parse(JSON.stringify())

能完成大部分?jǐn)?shù)據(jù)得深拷貝疼邀。但存在問(wèn)題

1.undefined喂江、function、symbol這三種類型的值就是非安全的旁振,所以格式化后获询,就被過(guò)濾掉了

  1. set涨岁、map這種數(shù)據(jù)格式的對(duì)象,也并沒(méi)有被正確處理吉嚣,而是處理成了一個(gè)空對(duì)象
  2. 循環(huán)引用報(bào)錯(cuò)
  3. 相同的引用會(huì)被重復(fù)復(fù)制

**寫一個(gè)遞歸調(diào)用得函數(shù)進(jìn)行深拷貝

function deepCopy(data) {
      if(typeof data !== 'object' || data === null){
          throw new TypeError('傳入?yún)?shù)不是對(duì)象')
      }
      let newData = {};
      const dataKeys = Object.keys(data);
        dataKeys.forEach(value => {
        const currentDataValue = data[value];
        // 基本數(shù)據(jù)類型的值和函數(shù)直接賦值拷貝 
       if (typeof currentDataValue !== "object" || currentDataValue === null) {
            newData[value] = currentDataValue;
        } else if (Array.isArray(currentDataValue)) {
           // 實(shí)現(xiàn)數(shù)組的深拷貝
          newData[value] = [...currentDataValue];
        } else if (currentDataValue instanceof Set) {
           // 實(shí)現(xiàn)set數(shù)據(jù)的深拷貝
           newData[value] = new Set([...currentDataValue]);
        } else if (currentDataValue instanceof Map) {
           // 實(shí)現(xiàn)map數(shù)據(jù)的深拷貝
           newData[value] = new Map([...currentDataValue]);
        } else { 
           // 普通對(duì)象則遞歸賦值
           newData[value] = deepCopy(currentDataValue);
        } 
     }); 
    return newData;
}

測(cè)試數(shù)據(jù)

// 測(cè)試數(shù)據(jù)項(xiàng)
var data = {
  age: 18,
  name: "liuruchao",
  education: ["小學(xué)", "初中", "高中", "大學(xué)", undefined, null],
  likesFood: new Set(["fish", "banana"]),
  friends: [
    { name: "summer",  sex: "woman"},
    { name: "daWen",   sex: "woman"},
    { name: "yang",    sex: "man" }
  ], 
  work: { 
    time: "2019", 
    project: { name: "test",obtain: ["css", "html", "js"]} 
  }, 
  play: function() {console.log("玩滑板");}
}

如何用正則實(shí)現(xiàn) trim()梢薪?

function trim(string){
    return string.replace(/^\s+|\s+$/g, '')
}

不用 class 如何實(shí)現(xiàn)繼承?用 class 又如何實(shí)現(xiàn)尝哆?

不用class

function Animal(name){ 
    this.name = name; 
    this.colors = ["red", "blue", "green"]; 
} 
 
Animal.prototype.sayName = function(){ 
    console.log(this.name); 
}

function Dog(name, age){   
    //繼承屬性 
    Animal.call(this, name); 
    this.age = age; 
} 
 
let f = function () {}
f.prototype = Animal.prototype

//繼承方法 
Dog.prototype = new f();  
Dog.prototype.constructor = Dog; 
Dog.prototype.sayAge = function(){ 
    alert(this.age); 
}; 

用class實(shí)現(xiàn)繼承

class Animal{
     constructor(color){
         this.color = color
     }
     move(){}
 }
 class Dog extends Animal{
     constructor(color, name){
         super(color)
         this.name = name
     }
     say(){}
 }

數(shù)組去重

  1. 利用indexOf實(shí)現(xiàn)去重秉撇。

indexOf()方法返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引,如果不存在秋泄,則返回-1琐馆。

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
    let res = []
    for (let i = 0; i < arr.length; i++) {
        if (res.indexOf(arr[i]) === -1) {
            res.push(arr[i])
        }
    }
    return res
}
  1. 相鄰元素去重

先用sort進(jìn)行排序

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
    arr = arr.sort()
    let res = []
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] !== arr[i-1]) {
            res.push(arr[i])
        }
    }
    return res
}
  1. 使用set

set中的值是唯一的

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
    return [...new Set(arr)]
}

DOM

事件冒泡、事件捕獲恒序、事件委托
<div class="father">
  <div class="child"></div>
</div>

用戶點(diǎn)擊瘦麸,當(dāng)father和child都存在點(diǎn)擊事件時(shí),先執(zhí)行哪一個(gè)事件
事件冒泡認(rèn)為應(yīng)該先從子元素開(kāi)始執(zhí)行歧胁。往后面冒泡滋饲。
事件捕獲則是從父元素開(kāi)始執(zhí)行。最后執(zhí)行子元素喊巍。
event.stopPropagation()可組織事件冒泡或者捕獲屠缭。
在子元素點(diǎn)擊事件執(zhí)行時(shí)添加stopPropagation就可以組織父元素的點(diǎn)擊事件執(zhí)行
addEventListener第三個(gè)參數(shù)可以設(shè)置事件冒泡或者事件捕獲

 ul.addEventListener('click', function(e){
     if(e.target.tagName.toLowerCase() === 'li'){
         fn() // 執(zhí)行某個(gè)函數(shù)
     }
 }) // 默認(rèn)為false。事件冒泡

高階版

當(dāng)li里面有個(gè)span崭参。點(diǎn)擊了span

function delegate(element, eventType, selector, fn) {
     element.addEventListener(eventType, e => {
       let el = e.target
       while (!el.matches(selector)) {
         if (element === el) {
           el = null
           break
         }
         el = el.parentNode
       }
       el && fn.call(el, e, el)
     })
     return element
   }

HTTP

HTTP 狀態(tài)碼知道哪些呵曹?分別什么意思?
  1. 100 Continue
    這個(gè)臨時(shí)響應(yīng)表明阵翎,迄今為止的所有內(nèi)容都是可行的逢并,客戶端應(yīng)該繼續(xù)請(qǐng)求,如果已經(jīng)完成郭卫,則忽略它砍聊。
  2. 102 Processing
    此代碼表示服務(wù)器已收到并正在處理該請(qǐng)求,但沒(méi)有響應(yīng)可用贰军。
  3. 200 OK
    請(qǐng)求成功
  4. 201 Created
    該請(qǐng)求已成功玻蝌,并因此創(chuàng)建了一個(gè)新的資源。這通常是在POST請(qǐng)求词疼,或是某些PUT請(qǐng)求之后返回的響應(yīng)俯树。
  5. 204 No content
    服務(wù)器成功處理了請(qǐng)求,但不需要返回任何實(shí)體內(nèi)容
  6. 301 Moved Permanently
    被請(qǐng)求的資源已永久移動(dòng)到新位置.
  7. 302 Found
    請(qǐng)求的資源現(xiàn)在臨時(shí)從不同的 URI 響應(yīng)請(qǐng)求贰盗。由于這樣的重定向是臨時(shí)的许饿,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請(qǐng)求。
  8. 400 Bad Request
    1舵盈、語(yǔ)義有誤陋率,當(dāng)前請(qǐng)求無(wú)法被服務(wù)器理解球化。除非進(jìn)行修改,否則客戶端不應(yīng)該重復(fù)提交這個(gè)請(qǐng)求瓦糟。
    2筒愚、請(qǐng)求參數(shù)有誤。
  9. 403 Forbidden
    服務(wù)器已經(jīng)理解請(qǐng)求菩浙,但是拒絕執(zhí)行它巢掺。權(quán)限
  10. 404 No Found
    請(qǐng)求失敗,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)劲蜻。
  11. 500 Internal Server Error
    服務(wù)器遇到了不知道如何處理的情況陆淀。

2開(kāi)頭一般表示成功。3開(kāi)頭表示需要進(jìn)一步的操作斋竞。4開(kāi)頭表示客戶端錯(cuò)誤倔约。5開(kāi)頭表示服務(wù)器端錯(cuò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坝初,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子钾军,更是在濱河造成了極大的恐慌鳄袍,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吏恭,死亡現(xiàn)場(chǎng)離奇詭異拗小,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)樱哼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門哀九,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人搅幅,你說(shuō)我怎么就攤上這事阅束。” “怎么了茄唐?”我有些...
    開(kāi)封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵息裸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我沪编,道長(zhǎng)呼盆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任蚁廓,我火速辦了婚禮访圃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘相嵌。我一直安慰自己腿时,他們只是感情好克胳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著圈匆,像睡著了一般漠另。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跃赚,一...
    開(kāi)封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天笆搓,我揣著相機(jī)與錄音,去河邊找鬼纬傲。 笑死满败,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叹括。 我是一名探鬼主播算墨,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼汁雷!你這毒婦竟也來(lái)了净嘀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤侠讯,失蹤者是張志新(化名)和其女友劉穎挖藏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體厢漩,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膜眠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溜嗜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宵膨。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖炸宵,靈堂內(nèi)的尸體忽然破棺而出辟躏,到底是詐尸還是另有隱情,我是刑警寧澤焙压,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布鸿脓,位于F島的核電站,受9級(jí)特大地震影響涯曲,放射性物質(zhì)發(fā)生泄漏野哭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一幻件、第九天 我趴在偏房一處隱蔽的房頂上張望拨黔。 院中可真熱鬧,春花似錦绰沥、人聲如沸篱蝇。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)零截。三九已至麸塞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涧衙,已是汗流浹背哪工。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弧哎,地道東北人雁比。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像撤嫩,于是被迫代替她去往敵國(guó)和親偎捎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)述JS中this的指向和如何改變它的指向 javascript中序攘,this是動(dòng)態(tài)綁定的茴她,它可以是全局對(duì)象、當(dāng)前對(duì)...
    我是一小白白閱讀 230評(píng)論 0 0
  • 一两踏、談?wù)凴untime 1败京、OC是一門動(dòng)態(tài)性比較強(qiáng)的編程語(yǔ)言,允許很多操作推遲到程序運(yùn)行時(shí)再進(jìn)行 2梦染、OC的動(dòng)態(tài)性...
    奮斗的小馬達(dá)閱讀 304評(píng)論 0 1
  • 1、 [1,2,3].map(parseInt)輸出結(jié)果朴皆? 答案:1帕识,NaN,NaN 解析: ar...
    像魚_真好聽(tīng)閱讀 566評(píng)論 0 1
  • 小編費(fèi)力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用遂铡。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 4,580評(píng)論 1 114
  • 面試題一:Java1.equals與==的區(qū)別:==是判斷兩個(gè)變量或?qū)嵗遣皇侵赶蛲粋€(gè)內(nèi)存空間 equals是判...
    請(qǐng)叫我財(cái)迷閱讀 1,032評(píng)論 0 2