教你用JS獲取Headers頭部信息
一、應(yīng)用場景
當(dāng)我們請求一個接口的時(shí)候,會發(fā)現(xiàn) res 里面包含一個 headers 響應(yīng)頭信息:
fetch(url, { method: 'GET', headers: { 'content-type': 'application/json', 'X-Requested-With': 'XMLHttpRequest', }, mode: 'cors', credentials: 'include', }).then(res => { console.log('res =', res); });
首先他里面肯定是有值的,只不過是一個Headers 對象,直接提供對象點(diǎn)語法是取不出來的
fetch(url, { method: 'GET', headers: { 'content-type': 'application/json', 'X-Requested-With': 'XMLHttpRequest', }, mode: 'cors', credentials: 'include', }).then(res => { console.log('res =', res.headers.Date); // undefined console.log('res =', res.headers.date); // undefined });
這時(shí)候就要用到 Headers 對象 自帶的方法了
fetch(url, { method: 'GET', headers: { 'content-type': 'application/json', 'X-Requested-With': 'XMLHttpRequest', }, mode: 'cors', credentials: 'include', }).then(res => { console.log('res =', res.headers.get('Content-Length')); // 1590 console.log('res =', res.headers.get('content-length')); // 1590 // 不區(qū)分大小寫 console.log('res =', res.headers.get('conTEnt-length')); // 1590 });
二、實(shí)例方法
創(chuàng)建一個空的 Headers 對象是簡單的:
var myHeaders = new Headers();
2.1、追加:append()
append()
方法:可以追加一個新值到已存在的 headers 上,或者新增一個原本不存在的 header。
語法:
`參數(shù): name: 要追加給 Headers 對象的 HTTP header 名稱。 value: 要追加給 Headers 對象的 HTTP header 值。 ` myHeaders.append(name,value);
示例:
var myHeaders = new Headers(); myHeaders.append('Content-Type', 'image/jpeg'); myHeaders.get('Content-Type'); // Returns 'image/jpeg' // 如果指定 header 不存在,append()將會添加這個 header 并賦值 . myHeaders.append('Accept-Encoding', 'deflate'); // 如果指定 header 已存在并允許有多個值,append()將會把指定值添加到值隊(duì)列的末尾。 myHeaders.append('Accept-Encoding', 'gzip'); myHeaders.getAll('Accept-Encoding'); // Returns [ "deflate", "gzip" ]
要使用新值覆蓋舊值,請使用Headers.set。
2.2、獲?。篻et()
get()
方法:以 ByteString 形式從 Headers 對象中返回指定 header 的全部值。如果 Header 對象中不存在請求的 header,則返回 null。語法:
`參數(shù): name: 要獲取 Headers 對象的 HTTP header 名稱。 ` myHeaders.get(name);
示例:
var myHeaders = new Headers(); myHeaders.append('Content-Type', 'image/jpeg'); myHeaders.get('Content-Type'); // 'image/jpeg' // 如果存在多個 header 值,那么只有第一個值會被返回: myHeaders.append('Accept-Encoding', 'deflate'); myHeaders.append('Accept-Encoding', 'gzip'); myHeaders.get('Accept-Encoding'); // "deflate,gzip"
2.3、覆蓋:set()
set()
方法:在可以在已經(jīng)聲明中的 headers 對象修改已有的一組鍵值對或者創(chuàng)建一個新的鍵值對。
語法:
`參數(shù): name: 需要對 HTTP header 設(shè)置新值的 key,一般為字符串。 如果設(shè)置的name 不是 HTTP header 規(guī)范里面規(guī)定的 name,那么將會拋出錯誤"TypeError"。 value: value 就是 name 對應(yīng)的值. ` myHeaders.set(name);
示例:
var myHeaders = new Headers(); myHeaders.append('Content-Type', 'image/jpeg'); myHeaders.set('Content-Type', 'text/html'); // 'text/html' // 如果這個鍵值對不存在,那么 set() 方法首先創(chuàng)建一個鍵值對,然后給它賦值。 myHeaders.set('Accept-Encoding', 'deflate'); // 如果這個鍵值對存在,那么 set() 方法將會覆蓋之前的 value 值: myHeaders.set('Accept-Encoding', 'gzip'); myHeaders.get('Accept-Encoding'); // 'gzip'
如果你需要增加一個鍵值對,而不是要覆蓋之前的鍵值對,那么你需要用append()方法
2.4、判斷:has()
has()
方法:返回一個布爾值來聲明一個 Headers對象 是否包含特定的頭信息。
語法:
`參數(shù): name: 你要測試的 HTTP 頭字段的名稱。 如果給出的名稱不在 HTTP 頭中,將爬出異常TypeError。 ` myHeaders.has(name);
示例:
var myHeaders = new Headers(); myHeaders.append('Content-Type', 'image/jpeg'); myHeaders.has('Content-Type'); // true myHeaders.has('Accept-Encoding'); // false
2.5、判斷:delete()
delete()
方法:可以從 Headers 對象中刪除指定 header.
語法:
`參數(shù): name: 需刪除的 HTTP header 名稱。 ` myHeaders.delete(name);
示例:
var myHeaders = new Headers(); // 先添加 myHeaders.append('Content-Type', 'image/jpeg'); myHeaders.get('Content-Type'); // 'image/jpeg' // 后刪除 myHeaders.delete('Content-Type'); myHeaders.get('Content-Type'); // null(因?yàn)樗驯粍h除)
2.6、遍歷:key(),values(),entries()
返回的是一個
Headers Iterator {}
迭代器,不能使用普通的for、forEach、map方法去遍歷
// 創(chuàng)建一個 Headers 對象 var myHeaders = new Headers(); myHeaders.append('Content-Type', 'text/xml'); myHeaders.append('Vary', 'Accept-Language'); // 顯示 Headers 中所有的 key for(var key of myHeaders.keys()) { console.log(key); /* 打印結(jié)果: 'Content-Type' 'Vary' */ } // 顯示 Headers 中所有的 value for(var value of myHeaders.values()) { console.log(value); /* 打印結(jié)果: 'text/xml' 'Accept-Language' */ } // 顯示 Headers 中所有的 [key, value] 鍵值對 for(var entrie of myHeaders.entries()) { console.log(entrie); /* 打印結(jié)果: ['Content-Type', 'text/xml'] ['Vary', 'Accept-Language'] */ }
總結(jié)
到此這篇關(guān)于JS獲取Headers頭部信息的文章就介紹到這了,更多相關(guān)JS獲取Headers頭部信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript 異步調(diào)用框架 (Part 6 - 實(shí)例 & 模式)
我們用了5篇文章來討論如何編寫一個JavaScript異步調(diào)用框架(問題 & 場景、用例設(shè)計(jì)、代碼實(shí)現(xiàn)、鏈?zhǔn)秸{(diào)用、鏈?zhǔn)綄?shí)現(xiàn)),現(xiàn)在是時(shí)候讓我們看一下在各種常見開發(fā)情景中如何使用它了。2009-08-08JS實(shí)現(xiàn)統(tǒng)計(jì)字符串中字符出現(xiàn)個數(shù)及最大個數(shù)功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)統(tǒng)計(jì)字符串中字符出現(xiàn)個數(shù)及最大個數(shù)功能,結(jié)合實(shí)例形式分析了javascript字符串遍歷、統(tǒng)計(jì)相關(guān)操作技巧,需要的朋友可以參考下2018-06-06javascript中的深復(fù)制詳解及實(shí)例分析
這篇文章主要介紹了javascript中的深復(fù)制詳解及實(shí)例分析的相關(guān)資料,需要的朋友可以參考下2016-12-12調(diào)試JavaScript中正則表達(dá)式中遇到的問題
這篇文章主要介紹了調(diào)試JavaScript中正則表達(dá)式中遇到的問題,需要的朋友可以參考下2015-01-01JS構(gòu)建頁面的DOM節(jié)點(diǎn)結(jié)構(gòu)的實(shí)現(xiàn)代碼
本來想用json格式的,可是要么有重復(fù),要么得嵌套,所以改用對象嵌套數(shù)組2011-12-12js學(xué)習(xí)總結(jié)之DOM2兼容處理this問題的解決方法
這篇文章主要為大家詳細(xì)介紹了js學(xué)習(xí)總結(jié)之DOM2兼容處理this問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07