HTTP 狀態(tài)碼 406 竟意味著這樣的錯(cuò)誤
在網(wǎng)上沖浪時(shí),HTTP狀態(tài)碼就像代碼一樣,告訴我們頁(yè)面背后在干。今天我們要來(lái)聊聊那個(gè)煩人的406狀態(tài)碼,意思就是“不可以”。這不就跟在說(shuō)“抱歉,你的要求我做不到”似的嗎?那到底是啥問(wèn)題導(dǎo)致這個(gè)情況發(fā)生?就讓我們一探究竟。
瀏覽器:"給我這個(gè)",服務(wù)器:"抱歉沒(méi)有哦"
首先,咱們得懂,當(dāng)咱們用瀏覽器跟網(wǎng)站服務(wù)聊天時(shí),它會(huì)告訴對(duì)方咱們能看哪些格式的信息,像是HTML啊、JSON呀或者是XML啥的。這個(gè)過(guò)程,主要靠Header里面的那個(gè)Accept屬性來(lái)實(shí)現(xiàn)。但是話(huà)說(shuō)回來(lái),要是網(wǎng)站服務(wù)找遍了所有地方都沒(méi)找到咱們想要的那種信息,那它只能無(wú)奈地給咱們回個(gè)406狀態(tài)代碼,意思就是說(shuō)“對(duì)不住,沒(méi)有您要的那款”。就好比說(shuō)咱們?nèi)ゲ宛^想吃招牌菜,結(jié)果廚師告訴咱們今兒老板出門(mén)忘帶食材了,那得多掃興!
咱接著聊要是服務(wù)器真沒(méi)你要的你咋辦?先查查你的請(qǐng)求頭上有木有你指明了但它搞不定的類(lèi)型。有的話(huà),你得想想怎么修改請(qǐng)求,或者讓服務(wù)器能搞定這些類(lèi)型。舉個(gè)例子,比如你去飯館吃飯,菜單上沒(méi)你想吃的菜,你要么試試其他的,要么跟老板說(shuō)說(shuō)增個(gè)新菜。
內(nèi)容編碼問(wèn)題:壓縮包里的秘密
除了文章種類(lèi)外,還有一種情況也會(huì)引發(fā)406錯(cuò)誤,就是編碼問(wèn)題。當(dāng)你的電腦向服務(wù)器發(fā)送請(qǐng)求時(shí),可能會(huì)告訴對(duì)方我支持哪種碼型,如gzip或deflate。這些編碼格式能讓數(shù)據(jù)變小,加載網(wǎng)頁(yè)也就更快。但要是服務(wù)器不懂得這些套路,滿(mǎn)足不了你的需求,那么也只能給你傳來(lái)一串406代碼了。就好比你叫服務(wù)員給你裝飯要特定盒子,但她卻說(shuō)不行,讓你覺(jué)得很郁悶不解。
要解決這個(gè)問(wèn)題,首先要看下你給服務(wù)器發(fā)的請(qǐng)求頭上有沒(méi)有Accept-Encoding字段,看看你選的編碼方式是不是服務(wù)器能處理的那種。如果不行的話(huà),那就得考慮修改你的請(qǐng)求了,或者跟服務(wù)器那邊說(shuō)說(shuō),讓他們也考慮加點(diǎn)兒支持。打個(gè)比方說(shuō),就像咱們買(mǎi)東西時(shí),發(fā)現(xiàn)商家沒(méi)貨想要的那種包裝,那就只能換別的包裝,要么就跟商家提點(diǎn)兒建議,也多備些自己喜歡的那種包裝。
語(yǔ)言偏好不符:你說(shuō)中文,服務(wù)器只懂英文
瀏覽器跟服務(wù)器交流的時(shí)候,有時(shí)候也會(huì)鬧點(diǎn)誤會(huì)。比如說(shuō),瀏覽器告訴服務(wù)器它喜歡啥語(yǔ)言,結(jié)果服務(wù)器卻沒(méi)這個(gè)語(yǔ)言的資料,這時(shí)候就會(huì)給瀏覽器發(fā)個(gè)406出錯(cuò)信息。想想看,你想去個(gè)只會(huì)講英語(yǔ)的餐廳,而你又不會(huì)英語(yǔ),那不就卡住了嗎?
想解決這個(gè)問(wèn)題?那你得檢查下你發(fā)送出去的請(qǐng)求頭里有沒(méi)有設(shè)置Accept-Language這個(gè)屬性,確保你要求了服務(wù)器能提供的語(yǔ)言。如果服務(wù)器真的搞不定,那你可能得調(diào)整下你的請(qǐng)求,或者讓服務(wù)器那邊多加幾種語(yǔ)言支持。就像去旅游,要是商家不提供你想要的語(yǔ)言服務(wù),別急,換種語(yǔ)言試試看,或者給商家提個(gè)建議,說(shuō)不定就能滿(mǎn)足你的需求!
檢查請(qǐng)求頭設(shè)置:讓你的請(qǐng)求更明確
想要避開(kāi)那個(gè)討厭的406代碼,你得搞定所有的請(qǐng)求頭設(shè)置才行。這就是說(shuō),要看看那個(gè)Accept、Accept-Encoding和Accept-Language這些標(biāo)簽,保證它們都是服務(wù)器能接受的。就像去超市買(mǎi)東西,你得確認(rèn)你的購(gòu)物清單里的東西都有貨,不然只能兩手空空回家。
服務(wù)端配置:讓服務(wù)器更懂你的心
其實(shí),服務(wù)器管理員就跟餐廳大廚差不多,他們要給服務(wù)器設(shè)定合適的配置來(lái)應(yīng)對(duì)各種多變的媒體格式、編碼和語(yǔ)言需求。這樣才能保證我們?cè)谑褂脮r(shí)不會(huì)遇到問(wèn)題,就像我們?nèi)コ燥垼绻麖N師做不出我們想要的菜,那肯定就不開(kāi)心了!
應(yīng)用程序調(diào)整:讓你的應(yīng)用更靈活
開(kāi)發(fā)者要保證應(yīng)用能看頭來(lái)調(diào)動(dòng)響應(yīng)的形式。就像飯店服務(wù)員那樣,得根據(jù)客人要求來(lái)改變行為,否則他們可能不高興了。
全面測(cè)試API:確保一切都在掌控之中
就是要在不同的設(shè)備跟網(wǎng)絡(luò)環(huán)境里跑程序,看看API能不能應(yīng)對(duì)各種各樣的‘菜單頭’。想想咱們?nèi)コ燥垼媒?jīng)常試試新菜和服務(wù)?這樣才能保證客人吃得舒服!
文檔清晰:讓一切都有據(jù)可依
寫(xiě)清楚API文檔,像菜單那樣告訴別人能傳啥文件格式,用什么語(yǔ)言寫(xiě)的,別讓他們搞錯(cuò)了,弄出來(lái)個(gè)406錯(cuò)誤。
快速定位406錯(cuò)誤的方法:讓問(wèn)題無(wú)所遁形
想要確定網(wǎng)站能否正常渲染,可以查看下瀏覽器的開(kāi)發(fā)者工具或者抓包工具,看看請(qǐng)求頭上有沒(méi)有包含所需媒體類(lèi)型的Accept字段,服務(wù)器返回的狀態(tài)碼是不是對(duì)的。就像是買(mǎi)東西時(shí),要看清自己要買(mǎi)什么,商家又有沒(méi)有這個(gè)貨。
遇到API406錯(cuò)誤?那你得看看前端傳過(guò)去的數(shù)據(jù)格式對(duì)不對(duì)得上后端返回的那個(gè),兩邊統(tǒng)一了才行!這個(gè)道理就像你去吃飯,廚師菜跟你想吃的一樣你才開(kāi)心。
最后咱們來(lái)回顧總結(jié)哈。HTTP狀態(tài)碼406,有點(diǎn)煩,不過(guò)理解清楚為啥會(huì)這樣,怎么處理,就能搞定。比如媒體類(lèi)型不對(duì),內(nèi)容編碼有問(wèn)題,或者語(yǔ)言偏好不符啥的,咱都有方法解決。多看看請(qǐng)求頭是不是設(shè)對(duì)了,服務(wù)器是不是配好了,程序該調(diào)的也弄弄,再把API好好測(cè)測(cè),寫(xiě)詳細(xì)點(diǎn)的說(shuō)明文檔,能少出不少406的事兒。
有沒(méi)有遇到過(guò)這種情況?用API的時(shí)候,突然跳出來(lái)一個(gè)406狀態(tài)碼。那你當(dāng)時(shí)是怎么搞定它的?快來(lái)留言分享一下你解決這個(gè)問(wèn)題的經(jīng)驗(yàn)。讓我們互相學(xué)習(xí)進(jìn)步。別忘了轉(zhuǎn)發(fā)評(píng)論這篇文章,讓更多的朋友們也能學(xué)到關(guān)于HTTP狀態(tài)碼406的知識(shí)!
作者:小藍(lán)
鏈接:http://www.bdf120.com.cn/content/904.html
本站部分內(nèi)容和圖片來(lái)源網(wǎng)絡(luò),不代表本站觀點(diǎn),如有侵權(quán),可聯(lián)系我方刪除。