在瀏覽器中輸入網址,到頁面顯示出來,中間發生了什么?
1、查詢DNS,獲取域名對應的IP。
(1)檢查本地hosts文件是否有這個網址的映射,如果有,就調用這個IP地址映射,解析完成。
(2)如果沒有,則查找本地DNS解析器緩存是否有這個網址的映射,如果有,返回映射,解析完成。
(3)如果沒有,則查找填寫或分配的首選DNS服務器,稱為本地DNS服務器。服務器接收到查詢時:
(4)如果本地DNS服務器也失效:
2、客戶機發送HTTP請求報文:
(1)應用層:客戶端發送HTTP請求報文
(2)傳輸層:切分長數據,并確??煽啃?。
(3)網絡層:進行路由
(4)數據鏈路層:傳輸數據
(5)物理層:物理傳輸bit
3、服務器端經過物理層→數據鏈路層→網絡層→傳輸層→應用層,解析請求報文,發送HTTP響應報文。
4、客戶端解析HTTP響應報文
5、瀏覽器開始顯示HTML
6、瀏覽器重新發送請求獲取圖片、CSS、JS的數據。
7、如果有AJAX,瀏覽器發送AJAX請求,及時更新頁面。
——————————————————
微信搜索公眾號【輪子工廠】,后臺回復關鍵字:
1.回復【圖書】:獲取15本新手自學編程,零基礎入門經典學習教材;
2.回復【我要造輪子】:獲取100多本我根據知乎上面關于計算機問題的高贊回答里面的介紹整理出來的書籍;
3.回復【內推】:可幫你內推到大廠工作。
4.回復【C】:可免費獲得自制C語言教程。
于現代網民來說
飯可以不吃,網不能不上
聚會聊天已經變為聚會開黑
坐車等人不摸下手機渾身難受
洗完澡必須刷個抖音否則完全無法入睡
“
躺床上辦公已經不再是夢,
這個時代靠著網絡足以“坐井觀天”!
”
互聯網行業的發達帶給人們前所未有的便捷,但是人們從沒想過,萬一哪天網絡崩潰,自己還能否正確找到回家的路?
眾所周知,瀏覽器是瀏覽網頁的入口,當瀏覽網頁的過程中出現了網頁無法訪問的時候,最常見的處理方式就是重啟瀏覽器或者重啟電腦,如果還不行很多人就不知道要如何處理了,尤其是一些相對特殊的網站,比如說政府或企業的采購網站,一旦訪問不了,不管是對服務端還是客戶端來說,造成的后果往往是比較嚴重的。
網絡崩了你可不能崩
接下來我們就來盤點1下
訪問http網頁出錯的常見原因和解決方案
DNS緩存問題
很多人知道有DNS緩存這個東西,但是并不知道這個東西是干什么用的。
首先我們要明白DNS和IP地址之間的關系,DNS即域名,相當于是各大網站在網絡上的門牌,而IP地址則是具體的門牌號,通過DNS解析服務器對DNS進行解析,解析出IP地址之后才能進行訪問。
DNS緩存的作用就是記錄在一段時間之內解析過的域名及其對應的IP地址,如果在設定的時間之內再次訪問這個網站,設備則不會再次進行解析,而是根據DNS緩存里的記錄進行訪問,提高訪問效率。但是當DNS緩存過高的時候,經常會出現訪問網站的時候解析失敗,自然而然也就訪問失敗了。最經典的案例就是電腦能夠登錄QQ,同時CMD控制臺也能ping通www.baidu.com,但是用瀏覽器訪問百度的時候就是打不開,或者打開的速度極慢,此時通常都是DNS緩存出了問題。
解決DNS緩存問題的方法也很簡單,對于電腦來說,可以重啟電腦,或者通過運行—CMD—輸入ipconfig/flushdns的方式進行DNS緩存列表重置,而對于路由器來說,可以直接重啟路由器,或者減小DNS緩存的老化時間,讓其緩存保留的時間縮短,以此方式控制DNS緩存在設備上的保留時間。
圖1 重置電腦的DNS緩存
DNS服務器配置不當
DNS配置不當容易導致訪問網頁的速度極慢,甚至有可能無法解析,導致訪問網頁失敗,比如辦理的是電信的寬帶線路,但是使用的是移動或者聯通的DNS服務器,此時可能導致DNS解析失敗,造成訪問失敗。
一般來說,辦理寬帶線路的時候,運營商已經設置好了賬號對應的DNS地址,在光貓或者路由器撥號的時候就能獲取到DNS服務器地址。但是有的用戶可能會覺得運營商設置的服務器解析比較慢,喜歡自己配置速度比較快的服務器,但是配置不當反而導致解析速度降低。配置路由器的靜態DNS也比較簡單,可以通過網絡配置—廣域網—靜態DNS自行配置,可以使用默認網關作為靜態DNS,也可以使用國內免費通用的DNS地址,比如114.114.114.114等,路由器設置好之后,連接路由器的電腦直接動態獲取就可以了。
圖2 配置路由器的靜態DNS
這里推薦一些常用的免費通用DNS服務器,以供參考:
圖3 常用的免費通用DNS服務器
DNS劫持
正常來說,域名和IP地址是一一對應的關系,就像人跟身份證一樣。訪問網頁的流程是當你輸入想要訪問的域名之后,本來DNS服務器解析出來并返回給你的地址為域名對應的IP地址,比如說為1.1.1.1,一旦DNS發生劫持,DNS服務器返回給你的地址或許就會是2.2.2.2,此時你訪問到的網站將不再是你原來想要訪問的那個網站,甚至DNS會進行判斷,如果這個流量是DNS服務器不感興趣的流量將直接被丟棄,導致沒有地址返回給訪問者,訪問者沒有接收到返回的IP地址,則導致無法訪問。
針對這種問題,可以嘗試換一個DNS服務器地址進行解析,也可以安裝第三方殺毒軟件進行防御和修復,或者在路由器上配置相關的DNS防御策略,通過行為管理—域名管理配置相關規則,過濾不安全的域名,提高防御級別。
圖4 配置域名安全管理規則
上面說到的都是由于DNS導致網頁無法訪問的問題,判斷是不是DNS導致網頁無法訪問,可以通過運行—CMD—ping DNS地址排查,如果ping DNS服務器的地址有回顯數據,則說明問題并不在DNS,而是要排查瀏覽器和網站服務器的問題。
圖5 ping DNS服務器地址,有回顯數據則為正常
瀏覽器的代理服務器配置不當
很多人瀏覽網頁的時候不希望別人可以通過抓包看到自己真實的IP地址,因此會設置一個代理服務器進行訪問,代理服務器可以看作是一臺路由器,訪問網頁的時候會通過設置的代理服務器地址進行訪問,但是很多時候會由于配置不當導致訪問的流量無法通過路由器,因此無法訪問到網頁。
此時可以通過打開IE—Internet選項—連接—局域網設置--代理服務器進行代理服務器的相關設置,設置完之后再次訪問網頁,則會以代理服務器的設置訪問,而不是以主機獲取到的IP地址進行訪問。
圖6 代理服務器設置
訪問端口錯誤
http協議默認的監聽端口為80,在輸入網址的時候,瀏覽器會默認幫你添加80端口,因此在訪問一般網頁的時候也就不需要輸入端口號。
但是有些比較特殊的網頁在開發的時候,為了防止惡意訪問,開發人員會設置特定的端口號,比如說維盟路由器默認WEB頁面的訪問端口號為80,維盟防火墻默認頁的面訪問端口號為9090,如果在登錄的時候不手動輸入端口也是無法進入登錄頁面的,端口號也可以通過登錄路由器—高級配置—WEB訪問配置—HTTP訪問端口進行設置。
圖7 WEB訪問端口號配置
由于網站服務器的問題導致訪問失敗
很多時候會由于網站本身的服務器導致網頁訪問失敗,比如說網站當前訪問的用戶數過多、在短時間內訪問當前網站的次數過多等問題,服務器會為了保證其正常運行而拒絕這些用戶的訪問,導致訪問失敗。也有可能訪問的網站根本就不存在,或者訪問的htm文件已經被管理員刪除了,也會導致訪問失敗,這種問題叫做目的地不可達,導致訪問失敗。
因為服務器導致網頁無法訪問的原因非常多,一般情況下瀏覽器也會根據訪問失敗的原因進行反饋,比如500、501、502、503等,其反饋的信息都是根據失敗的原因進行回顯,也可以通過打開瀏覽器—Internet選項—高級,取消“顯示友好的http錯誤提示”,此時可以看到具體的錯誤提示,比如403錯誤,403.1為服務器拒絕訪問等,每個代碼都代表著不同的錯誤,得到具體的原因之后則可以對癥下藥,更高效地解決訪問失敗的問題。
圖8 瀏覽器錯誤回顯信息設置
由于客戶端的問題導致訪問失敗
400、403和404是最經典的客戶端問題導致訪問失敗的原因,400為請求失敗,由于輸入了錯誤格式的網址等原因導致無法解析;403為禁止訪問,即服務器已經收到了訪問請求,但是拒絕該請求;404為無法找到網頁對應的htm文件。
關于403錯誤
小編在昨天遇到一個客戶咨詢:QQ可以正常登錄,CMD控制臺可以正常ping通百度,而且其他頁面都可以訪問,就只有他需要訪問的頁面出現403錯誤,此時路由器也可以ping通需要訪問的地址,但是就是無法通過頁面訪問。
登錄路由器查看訪問控制的日志,發現沒有任何拒絕該網站的日志,且路由器上沒有做任何關于http協議的訪問控制等策略,說明出現此錯誤并不是由于路由器的原因導致的。
最常見的403錯誤有禁止服務和賬號信息調用錯誤,首先排查賬號信息調用錯誤的問題,清空瀏覽器緩存、cookie和網站數據等,重啟瀏覽器重新打開該網址,但是依然出現403錯誤。
此時懷疑是由于電腦的IP地址被服務器禁止訪問該網站所導致,然后該用戶將IP地址修改為與現有地址同網段的另一個地址,修改之后重新訪問該網站,發現網站已經可以正常訪問了,最后將問題鎖定在訪問被禁止的原因上,修改一個地址即可以訪問。
關于訪問網頁出錯的原因非常多,如果細說的話三天三夜都說不完,由于客戶端導致的原因甚至要修改訪問的證書等等。
各http錯誤回顯碼對應的網絡故障
2xx 成功
200 正常;請求已完成。
201 正常;緊接 POST 命令。
202 正常;已接受用于處理,但處理尚未完成。
203 正常;部分信息 — 返回的信息只是一部分。
204 正常;無響應 — 已接收請求,但不存在要回送的信息。
3xx 重定向
301 已移動 — 請求的數據具有新的位置且更改是永久的。
302 已找到 — 請求的數據臨時具有不同 URI。
303 請參閱其它 — 可在另一URI 下找到對請求的響應,且應使用 GET 方法檢索此響應。
304 未修改 — 未按預期修改文檔。
305 使用代理 — 必須通過位置字段中提供的代理來訪問請求的資源。
306 未使用 — 不再使用;保留此代碼以便將來使用。
4xx 客戶機中出現的錯誤
400 錯誤請求 — 請求中有語法問題,或不能滿足請求。
401 未授權 — 未授權客戶機訪問數據。
402 需要付款 — 表示計費系統已有效。
403 禁止 — 即使有授權也不需要訪問。
404 找不到 — 服務器找不到給定的資源;文檔不存在。
407 代理認證請求 — 客戶機首先必須使用代理認證自身。
415 介質類型不受支持 — 服務器拒絕服務請求,因為不支持請求實體的格式。
HTTP 400 - 請求無效
HTTP 401.1 - 未授權:登錄失敗
HTTP 401.2 - 未授權:服務器配置問題導致登錄失敗
HTTP 401.3 - ACL 禁止訪問資源
HTTP 401.4 - 未授權:授權被篩選器拒絕
HTTP 401.5 - 未授權:ISAPI 或 CGI 授權失敗
HTTP 403 - 禁止訪問
HTTP 403 - 對 Internet 服務管理器 (HTML) 的訪問僅限于 Localhost
HTTP 403.1 禁止訪問:禁止可執行訪問
HTTP 403.2 - 禁止訪問:禁止讀訪問
HTTP 403.3 - 禁止訪問:禁止寫訪問
HTTP 403.4 - 禁止訪問:要求 SSL
HTTP 403.5 - 禁止訪問:要求 SSL 128
HTTP 403.6 - 禁止訪問:IP 地址被拒絕
HTTP 403.7 - 禁止訪問:要求客戶證書
HTTP 403.8 - 禁止訪問:禁止站點訪問
HTTP 403.9 - 禁止訪問:連接的用戶過多
HTTP 403.10 - 禁止訪問:配置無效
HTTP 403.11 - 禁止訪問:密碼更改
HTTP 403.12 - 禁止訪問:映射器拒絕訪問
HTTP 403.13 - 禁止訪問:客戶證書已被吊銷
HTTP 403.15 - 禁止訪問:客戶訪問許可過多
HTTP 403.16 - 禁止訪問:客戶證書不可信或者無效
HTTP 403.17 - 禁止訪問:客戶證書已經到期或者尚未生效
HTTP 404.1 - 無法找到 Web 站點
HTTP 404 - 無法找到文件
HTTP 405 - 資源被禁止
HTTP 406 - 無法接受
HTTP 407 - 要求代理身份驗證
HTTP 410 - 永遠不可用
HTTP 412 - 先決條件失敗
HTTP 414 - 請求 - URI 太長
5xx 服務器中出現的錯誤
500 內部錯誤 — 因為意外情況,服務器不能完成請求。
501 未執行 — 服務器不支持請求的工具。
502 錯誤網關 — 服務器接收到來自上游服務器的無效響應。
503 無法獲得服務 — 由于臨時過載或維護,服務器無法處理請求。
HTTP 500 - 內部服務器錯誤
HTTP 500.100 - 內部服務器錯誤 - ASP 錯誤
HTTP 500-11 服務器關閉
HTTP 500-12 應用程序重新啟動
HTTP 500-13 - 服務器太忙
HTTP 500-14 - 應用程序無效
HTTP 500-15 - 不允許請求 global.asa
Error 501 - 未實現
HTTP 502 - 網關錯誤
遇到此類問題的時候,用戶可以根據回顯的信息進行故障排查和處理,也歡迎大家在公眾號(woyaowifi)留言交流處理方式哦~
文由掘金@天行天忌授權發布,前端晚間課對其內容進行微改。
HTML,超文本標記語言,是一種用于創建網頁的標準標記語言。自從引入 HTML 以來,它就一直用于構建互聯網。與 JavaScript 和 CSS 一起,HTML 構成前端開發的三劍客。
盡管許多新技術使網站創建過程變得更簡單、更高效,但 HTML 始終是核心。隨著 HTML5 的普及,在 2014 年,這種標記語言發生了很多變化,變得更加友好,瀏覽器對新標準的支持熱度也越來越高。而HTML并不止于此,還在不斷發生變化,并且可能會獲得一些特性來證明對 HTML6 的命名更改是合理的。
該元素<dialog> 將隨 HTML6 一起提供。它被認為等同于用 JavaScript 開發的模態,并且已經標準化,但只有少數瀏覽器完全支持。但這種現象會改變,很快它將在所有瀏覽器中得到支持。
這個元素在其默認格式下,只會將光標顯示在它所在的位置上,但可以使用 JavaScript 打開模式。
<dialog>
<form method="dialog">
<input type="submit" value="確定" />
<input type="submit" value="取消" />
</form>
</dialog>
在默認形式下,該元素創建一個灰色背景,其下方是非交互式內容。
可以在 <dialog> 其中的表單上使用一種方法,該方法將發送值并將其傳遞回自身 <dialog>。
總的來說,這個標簽在用戶交互和改進的界面中變得有益。
可以通過更改 <dialog> 標簽的 open 屬性以控制打開和關閉。
<dialog open>
<p>組件內容</p>
</dialog>
FutureClaw 雜志主編 Bobby Mozumder 建議:
將錨元素鏈接到 JSON/XML、API 端點,讓瀏覽器在內部將數據加載到新的數據結構中,然后瀏覽器將 DOM 元素替換為根據需要加載的任何數據。初始數據(以及標準錯誤響應)可以放在標題裝置中,如果需要,可以稍后替換。
據他介紹,這是單頁應用程序網頁設計模式,可以提高響應速度和加載時間,因為不需要加載 JavaScript。
這個是一個比較有意思的提案,就有點類似我們以前沒有做前后端分離之前的混合編程的模式,HTML變成模板語言,通過JSON API請求數據,不一樣的是變成瀏覽器來默認解析,瀏覽器內部加載數據到新的數據結構中,然后瀏覽器將按需加載到的數據替換成 DOM 元素。
大家可以看一下InfoQ上的這篇文章《針對非正式 HTML6 提案“無需 JavaScript 的單頁應用”引發的論戰》,了解更多!
https://www.infoq.cn/article/2015/03/html6-without-javascript
HTML6 愛好者相信即將到來的更新將允許瀏覽器調整圖像大小以獲得更好的觀看體驗。
每個瀏覽器都難以呈現相對于設備和屏幕尺寸的最佳圖像尺寸,不幸的是,src 標簽 img 在處理這個問題時不是很有效。
這個問題可以通過一個新標簽 <srcset> 來解決,它使瀏覽器在多個圖像之間進行選擇的工作變得更加容易。
將可用庫引入 HTML6 絕對是提高開發效率的重要一步。
很多時候,需要在互聯網上定義一般信息,而這些一般信息可以是任何公開的信息,例如電話號碼、姓名、地址等。微格式是能夠定義一般數據的標準。微格式可以增強設計者的能力,并可以減少搜索引擎推斷公共信息所需的努力。
盡管標簽<ul>、<ol>非常有用,但在某些情況下仍有一些不足之處??梢蕴幚斫换ピ氐臉撕瀸⑹且粋€不錯的選擇。
這就是創建標簽 <menu> 的驅動力,它可以處理按鈕驅動的列表元素。
<menu type="toolbar">
<li><button>個人信息</button></li>
<li><button>系統設置</button></li>
<li><button>賬號注銷</button></li>
</menu>
因此 <menu>,除了能夠像普通列表一樣運行之外,還可以增強 HTML 列表的功能。
雖然HTML5在安全性方面還不錯,瀏覽器和網絡技術也提供了合理的保護。毫無疑問,在身份驗證和安全領域還有很多事情可以做。如密鑰可以異地存儲;這將防止不受歡迎的人訪問并支持身份驗證。使用嵌入式密鑰而不是 cookie,使數字簽名更好等。
HTML6 允許以更好的方式使用設備上的相機和媒體。將能夠控制相機、它的效果、模式、全景圖像、HDR 和其他屬性。
沒有什么是完美的,HTML 也不是完美的,所以 HTML 規范可以做很多事情來使它更好。應該對一些有用的規范進行標準化,以增強 HTML 的能力。小的變化已經開始推出。如增強藍牙支持、p2p 文件傳輸、惡意軟件保護、云存儲集成,下一個 HTML 版本可以考慮一下。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。