問(wèn)題:使用不對(duì)的http協(xié)議發(fā)送請(qǐng)求

情景描述

  • 使用nginx反向代理服務(wù)器
  • 服務(wù)器支持https協(xié)議
  • 發(fā)送請(qǐng)求的時(shí)候?qū)rl寫(xiě)成了http開(kāi)頭
  • 發(fā)現(xiàn)服務(wù)器返回錯(cuò)誤org.xml.sax.SAXParseException: The element type "hr" must be terminated by the matching end-tag "</hr>"

矛盾點(diǎn)

  • 單純分析錯(cuò)誤發(fā)現(xiàn)是由于
    標(biāo)簽沒(méi)有閉合造成的異常骂束,那么正常思路就是去找找服務(wù)器中哪里發(fā)送了這個(gè)html殃饿。所以我到服務(wù)器全局搜索
    這個(gè)標(biāo)簽都沒(méi)有找到官辈。完全沒(méi)了解決思路。
  • 我們?cè)诰帉?xiě)html文件的時(shí)候明明
    是可以沒(méi)有</hr>的鬼譬,為什么在這里會(huì)拋出異常?

是什么SAXParseException異常?

  • SAX知識(shí)補(bǔ)充:

    • SAX(simple api for xml):是一種XML解析的替代方法
    • SAX相比于DOM放接,是一種速度更快,更有效的解析XML文件的方式
    • 原理:它逐行掃描文檔留特,一邊掃描一邊解析纠脾,可以在解析文檔的任意時(shí)刻停止解析。

    總結(jié):由上可以知道SAX專(zhuān)門(mén)用來(lái)解析XML文件蜕青,并且邊掃描邊解析苟蹈。服務(wù)器解析xml的時(shí)候,解析到


    然后發(fā)現(xiàn)有問(wèn)題然后拋出異常右核。

  • get到的非技術(shù)相關(guān):

    • 看到一個(gè)異常被拋出:
      • 為什么拋出異常(其實(shí)就是異常message)
      • 這是什么異常(可以幫助你更多的了解上下文)
      • 什么拋出的(上一個(gè)問(wèn)題基本可以幫助你定位)
    • 但是其實(shí)光看message有時(shí)候是可以定位錯(cuò)誤的
  • 這個(gè)時(shí)候可以解釋矛盾點(diǎn)二:

    • 首先在html中<hr>可以不閉合
    • 但是我們這是xml文件

XML和HTML的區(qū)別又是啥

    • XML:可擴(kuò)展標(biāo)記語(yǔ)言
    • HTML: 超文本標(biāo)記語(yǔ)言
    • 相同點(diǎn):
      • 都是標(biāo)記語(yǔ)言慧脱,用于數(shù)據(jù)的保存和傳輸
    • 不同
      • 雖然都是跨平臺(tái)標(biāo)記語(yǔ)言:
        • xml:很多的編程語(yǔ)言都可以讀取其中數(shù)據(jù)(由于很多語(yǔ)言都內(nèi)置了xml解析器)
        • html:不同瀏覽器都可以解析html語(yǔ)言,并且將他顯示出來(lái)贺喝。
      • 服務(wù)對(duì)象:
        • xml:主要用于數(shù)據(jù)存儲(chǔ)菱鸥,重點(diǎn)在于數(shù)據(jù)能夠被讀取識(shí)別宗兼,因此是數(shù)據(jù)傳輸?shù)囊环N很好的格式。但是不用于顯示氮采,瀏覽器無(wú)法識(shí)別殷绍。
        • html:相當(dāng)于一種標(biāo)準(zhǔn),定義了一堆標(biāo)簽重點(diǎn)在于顯示鹊漠,不在于數(shù)據(jù)篡帕。
      • 自定義標(biāo)簽:
        • xml:可以自定義標(biāo)簽擴(kuò)展性好
        • html:由于是一種w3c標(biāo)準(zhǔn)。為了任何瀏覽器都可以識(shí)別標(biāo)簽贸呢,絕對(duì)不可以自定義镰烧,因此擴(kuò)展性差。
      • 語(yǔ)法
        • xml:嚴(yán)格要求嵌套楞陷、配對(duì)怔鳖,并遵循DTD的樹(shù)形結(jié)構(gòu);區(qū)分大小寫(xiě)固蛾;屬性值必須分裝在引號(hào)中结执;所有的屬性都必須帶有相應(yīng)的值;空白部分不會(huì)被解析器自動(dòng)刪除艾凯;xml比html 語(yǔ)法要求更嚴(yán)格
        • html:不要求標(biāo)記的嵌套献幔、配對(duì)等;不區(qū)分大小寫(xiě)引號(hào)是可用可不用的趾诗;可以擁有不帶值的屬性名蜡感;過(guò)濾掉空格;
  • -----> 結(jié)論:其實(shí)最大的差距在于用途不一致:html主要的用途就是在瀏覽器顯示focus在如何顯示出數(shù)據(jù)恃泪。而xml主要在于數(shù)據(jù)的傳輸郑兴,focus在如何更加方便各種語(yǔ)言閱讀數(shù)據(jù)。

  • -----> 和問(wèn)題相關(guān)的結(jié)論:xml的語(yǔ)法要求嚴(yán)格因此對(duì)于html中可以不封閉的
    標(biāo)簽在xml中會(huì)報(bào)錯(cuò)贝乎。response中HEADER的accept可以是XML也可以是HTML情连。因此可以大膽猜測(cè):服務(wù)器以為自己(約定)收到的是XML的response,因此使用xml解析器去解析览效,但是實(shí)際發(fā)送過(guò)來(lái)的卻是html却舀。因此gateway的response出錯(cuò)

  • ----> 類(lèi)比:其實(shí)這個(gè)問(wèn)題類(lèi)似于我曾經(jīng)在瀏覽器中看到過(guò)不能找到< 這樣的錯(cuò)誤。就是由于HEADER中的Accept告訴瀏覽器發(fā)送過(guò)來(lái)的是一個(gè)html文件锤灿,但是實(shí)際發(fā)過(guò)來(lái)的可能是js文件因此一定不是<開(kāi)頭

到底是哪里來(lái)的html里面帶了
挽拔?

  • 首先判斷這肯定是錯(cuò)誤情況出現(xiàn)的,所以可以看看錯(cuò)誤的請(qǐng)求能得到什么response衡招。這里我還是求助了老師篱昔,發(fā)現(xiàn)當(dāng)我請(qǐng)求了一個(gè)錯(cuò)誤的路徑,nginx會(huì)返回404not found其中的response是
 <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
<hr>
<center>nginx/1.10.3</center>
</body>
</html>`
恰巧有hr始腾。
  • 因此錯(cuò)誤可以這樣理解州刽,gateway服務(wù)器請(qǐng)求某個(gè)錯(cuò)誤的url,nginx由于沒(méi)有資源返回了404 html浪箭,但是gateway本來(lái)應(yīng)該約定收到xml穗椅,因此出錯(cuò)。

使用錯(cuò)誤的協(xié)議發(fā)請(qǐng)求

  • 例子:url使用http發(fā)送請(qǐng)求到https服務(wù)器一定會(huì)導(dǎo)致請(qǐng)求failed而且什么內(nèi)容都拿不到奶栖。
  • 如何避免:看清楚你服務(wù)器啟動(dòng)時(shí)候的log信息:他會(huì)給你打悠ケ怼:
    • 端口號(hào)
    • 協(xié)議類(lèi)型

反思

  • 當(dāng)看到服務(wù)器拋出異常沒(méi)有一種冷靜邏輯的分析思路,思維發(fā)散宣鄙。試一下試不出來(lái)就換方法袍镀。簡(jiǎn)單的說(shuō)還是在碰運(yùn)氣。

action

  • 以后看到問(wèn)題冻晤,需要先構(gòu)思解決思路苇羡。告訴自己首先應(yīng)該干什么如果。鼻弧。然后怎么樣设江。。必須有思路攘轩,并且問(wèn)題解決完畢必須說(shuō)明為什么出現(xiàn)這個(gè)問(wèn)題叉存。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市度帮,隨后出現(xiàn)的幾起案子歼捏,更是在濱河造成了極大的恐慌,老刑警劉巖笨篷,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甫菠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡冕屯,警方通過(guò)查閱死者的電腦和手機(jī)寂诱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)安聘,“玉大人痰洒,你說(shuō)我怎么就攤上這事≡【拢” “怎么了丘喻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)念颈。 經(jīng)常有香客問(wèn)我泉粉,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任嗡靡,我火速辦了婚禮跺撼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讨彼。我一直安慰自己歉井,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布哈误。 她就那樣靜靜地躺著哩至,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜜自。 梳的紋絲不亂的頭發(fā)上菩貌,一...
    開(kāi)封第一講書(shū)人閱讀 49,729評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音重荠,去河邊找鬼箭阶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛晚缩,可吹牛的內(nèi)容都是我干的尾膊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼荞彼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冈敛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鸣皂,我...
    開(kāi)封第一講書(shū)人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抓谴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后寞缝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體癌压,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年荆陆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滩届。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡被啼,死狀恐怖帜消,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浓体,我是刑警寧澤泡挺,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站命浴,受9級(jí)特大地震影響娄猫,放射性物質(zhì)發(fā)生泄漏贱除。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一媳溺、第九天 我趴在偏房一處隱蔽的房頂上張望月幌。 院中可真熱鬧,春花似錦褂删、人聲如沸飞醉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至轴术,卻和暖如春难衰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逗栽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工盖袭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彼宠。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓鳄虱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親凭峡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拙已,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)摧冀,斷路器倍踪,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法索昂,內(nèi)部類(lèi)的語(yǔ)法建车,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法椒惨,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,596評(píng)論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,805評(píng)論 0 11
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 10,911評(píng)論 6 13
  • 所有的營(yíng)銷(xiāo)都是基于產(chǎn)品的營(yíng)銷(xiāo)康谆。 很多人看到這句話(huà)的第一反應(yīng)是:產(chǎn)品做好了銷(xiāo)售就自然起來(lái)了领斥,玩那么多花樣不如把產(chǎn)品打...
    諶基平閱讀 628評(píng)論 0 0