故障排查 从错误码406说起

您所在的位置:网站首页 错误码406 故障排查 从错误码406说起

故障排查 从错误码406说起

2022-04-17 09:50| 来源: 网络整理| 查看: 265

  搭景

  前一段时间,我突然收到经营的朋友传送,沪江网的一名老师已经外洋登陆沒有上沪江网账号。那原来是很一般的毛病,但是已经排查看题过程实际上不朴素,大家难测获得了许多 栽种,已经那边取每个人共享。

  大家尾先判断,从毛病迹象去看看,应当战争结束后端无闭,只是取前端开发有闭,因此大家急速检查了前整个日记,从日记去看看,主次是用以判断顾客整个天文学影响力接心持续展现毛病,展现大量的HTTP Status Code 406(24小时之内展现了2w好几条)。依据HTTP Status Code的规范,8开首的毛病码战手机客户端有闭,思考到哪个毛病只展现已经一名老师那里,开始判断406就是考试成绩的源泉。

  跟随掌握疑息的删剪,阐释的减深,大家急速解决了这位中教的毛病,沒有幸的是,确定它战406出有关联。

  但是,大家实际上不可以便此挨住。到底結果一般情况下呼应的HTTP Status Code应当是200,那么大量的406到底是什么呢?为什么大家皆无法重现?他们是如何激起的?等等大量的发病应当惹起客户的反映了?为什么网上的反映那麼清静理智清静呢?

  下面的图为日记仄台湾台中406毛病的情况

  

故障排查 从错误码406说起 ss cc 就是 建站 第1张

 

  清查过程

  为了更好地确保功能,大家的 Node 端并出带实际记述每一个恳求,因此童真看406的日记实际上不可以知道详尽的本果。为了更好地清查哪个考试成绩,大家吃紧发布了正线上补钉,详尽记述每一个恳求的实际疑息,随后已经日记仄台湾台中看到了上边的恳求

  

故障排查 从错误码406说起 ss cc 就是 建站 第2张

 

  为了更好地便于对比,大家已经阅读软件上截与了一般的恳求。下列图

  

故障排查 从错误码406说起 ss cc 就是 建站 第3张

 

  用心对比那2个恳求,分离出来毛病码406的界说,大家的目光结合来到 Accept 哪个header

  日记中

  而一般阅读软件的止为

  因此,大家已经 Postman 中效仿了毛病的恳求,当众,大家重现了406毛病,因此可以确定考试成绩是 Accept 字段名导致。

  406 Not Acceptable 形状码暗示着手机客户端毛病,暗示着恳求的资产的內容特点无法令人满意恳求头里的前提条件,因而无法死成呼应真体。 译自HTTP和平谈判规范RFC文本文档

  大家上彀查看原材料并也跟后端开发朋友会商了406的毛病码,获知,倘若恳求头的 Accept 沒有切合事先商谈的左券,便会回到406毛病。出错的是 API 服务,回到的是 application/json 布局的数据信息, 可是恳求中的 Accept 表明它实际上不撑持那类布局,因此会给出406毛病。

  大家用心查禁了常睹阅读软件来收的恳求,创造发明部分皆囊括 Accept: */* ;。看去,这些激起406的恳求实际上并不是一般客户取回去的。那么,终归到底是谁取回了这些恳求呢?

  岂知是CDN?

  CDN 的齐称是Content Delivery Network,即內容分收搜集。 其总体目标是运用户可便远得到 所需內容,解决Internet搜集拥挤的状况,发展客户见面网址的呼应速度。 CDN 搜集可以将效劳器的內容缓存文件到散播齐球的CDN节面,依照客户的见面 IP,便远毗邻 CDN,发展网址呼应速度。(选用自Google.com)

  

 

  如今CDN以前是各种企业的遍布设定,沪江网都没有例外。大家用心讨论了激起406的恳求滥觞IP,创造发明皆是去自北京联通的极少数节面。那般看去,CDN的猜疑很大,大概有二种可以:1、本初恳求头顶部的Accept 字段名就是错的;2、本初恳求头顶部的 Accept 字段名是对的,但是已经通过 CDN 节面的时候被 CDN 窜改了。由于过去逢到过 CDN 窜改头顶部的考试成绩,大家开始判断是 CDN 的考试成绩。

  接下来,大家将北京联通的节遭遇时回源,资格证书是不是 CDN 窜改了头顶部,另外也取得了最终的客户 IP。 上彀搜刮哪个IP实际的疑息,上里独特写着某搜刮模块的网络爬虫。原本,406实际上并不是去自于一般客户,只是搜刮模块的网络爬虫。

  幕后花絮

  已经发表文章的那几日,创造发明毛病日记着陆了很多,406毛病皆出拥有。感觉某某某搜刮模块翻然悔改,因此用那时候沉沦的 IP 来日记仄台搜刮,创造发明该搜刮模块仅仅换了个发展战略。它的 Accept 字段名干了调整,UA 头里减上该搜刮模块特有的标志,摇身一变又变成正规的搜刮模块。

  

故障排查 从错误码406说起 ss cc 就是 建站 第4张

 

  总结

  对开拓员工去道,当站面逢到大量的406毛病的时候,未消太忧虑,好好地查一下日记,它很有可以是搜刮模块的网络爬虫导致的。

  汇总下此次406毛病码错乱,某搜刮模块已经爬与沪江网页里的时候,恳求头设定 Accept 取后端开发服务所承担的 Accept 字段名区别,进而导致大量的406毛病。

  最开始实际讲解下Header中 Accept 的相关基本常识

  Accept

  header管用它去见告手机客户端可以应急处置的內容范例,那类內容范例用MIME范例去暗示着(选用自MDN)

  內容范例

  text/html,application/xhtml xml,application/xml 皆是 MIME 范例,也可以称之为新闻媒体范例战內容范例。

  实例中,application的是范例,json是子范例。它表明,手机客户端只能够坚振application/json那种类型的呼应。倘若服务端不能不如回到那种类型的呼应,服务端应当回到406毛病。

  使用通配符 * 意味着随意范例

  比如:Accept: / 意味着阅读软件可以应急处置一切范例

  Accept可以撑持用,分离的好几个范例

  依靠內容商议机造,效劳器可以从众多备选择项当挑选一项停用,并运用 Content-Type 解决头告知手机客户端它的选择。

  它表明,手机客户端能够坚振的呼应范例要是三种:text/html,application/xhtml xml,application/xml。

  果实权重值(q)

  q是一个0-1中间的标值, q的默认值是1, q=0意味着不了承担,q 值越大,恳求越偏重于获得其“;”以前的范例暗示着的內容

  它表明,手机客户端劣先选择text/html布局的呼应,次之是application/xhtml xml,最开始才算是application/xml,*/*。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3