要學content-type,必須事先知道它到底是什麼,是做什麼用的。
HTTP協定(RFC2616)採用了請求/回應模型。客戶端向伺服器發送請求,請求頭包含請求的方法、URI、協定版本、以及包含請求修飾符、客戶 資訊和內容的類似MIME的訊息結構。伺服器以一個狀態行作為回應,對應的內容包括訊息協定的版本,成功或錯誤編碼加上包含伺服器資訊、實體元資訊以 及可能的實體內容。
通常HTTP訊息由一個起始行,一個或多個頭域,一個只是頭域結束的空行和可選的訊息體組成。 HTTP的頭域包括通用頭,請求頭,回應頭和實體頭四個部分。每個頭域由一個域名,冒號(:)和域值三部分組成。網域名稱是大小寫無關的,域 值前可以添加任何數量的空格符,頭域可以被擴展為多行,在每行開始處,使用至少一個空格或製表符。
請求訊息和回應訊息都可以包含實體訊息,實體訊息一般由實體頭域和實體組成。實體頭域包含關於實體的原始訊息,實體頭包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires 、Last-Modified、extension-header。
Content-Type是回傳訊息中非常重要的內容,表示後面的文件屬於什麼MIME類型。 Content-Type: [type]/[subtype]; parameter。例如最常見的就是text/html,它的意思是說回傳的內容是文字類型,這個文字又是HTML格式的。原則上瀏覽器會根據Content-Type來決定如何顯示傳回的訊息體內容。
type有下面的形式
Text:用於標準化地表示的文字訊息,文字訊息可以是多種字元集和或多種格式的;
Multipart:用於連接訊息體的多個部分構成一個訊息,這些部分可以是不同類型的資料;
Application:用於傳輸應用程式資料或二進位資料;
Message:用於包裝一個E-mail訊息;
Image:用於傳輸靜態圖片資料;
Audio:用於傳輸音訊或音聲資料;
Video:用於傳輸動態影像數據,可以是與音訊編輯在一起的視訊資料格式。
subtype用於指定type的詳細形式。 content-type/subtype配對的集合和與此相關的參數,將隨著時間而成長。為了確保這些值在一個有序且公開的狀態下開發,MIME使用Internet Assigned Numbers Authority (IANA)作為中心的註冊機制來管理這些值。
parameter可以用來指定附加的信息,更多情況下是用於指定text/plain和text/htm等的文字編碼方式的charset參數。 MIME根據type制定了預設的subtype,當客戶端無法確定訊息的subtype的情況下,訊息被視為預設的subtype來處理。 Text預設是text/plain,Application預設是application/octet-stream而Multipart預設會被看作multipart/mixed。對於IE6瀏覽器來說,如果Content-Type中的類型和實際的訊息體類型不一致,那麼它會根據內容中的類型來分析實際應該是什麼類型,對於JPG、GIF等常用圖片格式都可以正確的辨識出來,而不管Content-Type中寫的是什麼。
如果Content-Type中指定的是瀏覽器可以直接打開的類型,那麼瀏覽器就會直接打開其內容顯示出來,如果是被關聯到其它應用程式的類型,這時就要查找註冊表中關於這種類型的註冊情況,如果是允許直接開啟而不需要詢問的,就會直接調出這個關聯的應用程式來開啟這個文件,但如果是不允許直接開啟的,就會詢問是否開啟。對於沒有關聯到任何應用程式的類型,IE瀏覽器不知道它該如何打開,此時IE6就會把它當成XML來嘗試打開。
如果要想實現文件下載,可以在http的頭中加入:
fprintf(file, "Content-Disposition:attachment; filename="%s" rn", fileName);
經過測試,html,pdf,gif等原本在網頁中開啟的檔案都可以正常實作下載。
'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'doc' => 'application/msword',
'bin' => 'application/octet-stream',
'dms' => 'application/octet-stream',
'lha' => 'application/octet-stream',
'lzh' => 'application/octet-stream',
'exe' => 'application/octet-stream',
'class' => 'application/octet-stream',
'so ' => 'application/octet-stream',
'dll' => 'application/octet-stream',
'oda' => 'application/oda',
'pdf' => ' application/pdf',
'ai' => 'application/postscript',
'eps'=> '應用程式/後記',
'ps' =>; '應用程式/postscript',
'smi' =>; '應用程式/微笑',
'微笑' =>; 'application/smil',
'mif' =>; 'application/vnd.mif',
'xls' =>; 'application/vnd.ms-excel',
'ppt' =>; 'application/vnd.ms-powerpoint',
'wbxml' =>; 'application/vnd.wap.wbxml',
'wmlc' =>; 'application/vnd.wap.wmlc',
'wmlsc' =>; 'application/vnd.wap.wmlscriptc',
'bcpio' =>; 'application/x-bcpio',
'vcd' =>; 'application/x-cdlink',
'pgn' =>; 'application/x-chess-pgn',
'cpio' =>; 'application/x-cpio',
'csh' =>; 'application/x-csh',
'dcr' =>; 'application/x-director',
'dir' =>; 'application/x-director',
'dxr' =>; 'application/x-director',
'dvi' =>; 'application/x-dvi',
'spl' =>; 'application/x-futuresplash',
'gtar' =>; 'application/x-gtar',
'hdf' =>; 'application/x-hdf',
'js' =>; 'application/x-javascript',
'skp' =>; 'application/x-koan',
'skd' =>; 'application/x-koan',
'skt' =>; 'application/x-koan',
'skm' =>; 'application/x-koan',
'latex' =>; 'application/x-latex',
'nc' =>; 'application/x-netcdf',
'cdf' =>; 'application/x-netcdf',
'sh' =>; 'application/x-sh',
'shar' =>; 'application/x-shar',
'swf' =>; 'application/x-shockwave-flash',
'sit' =>; 'application/x-stuffit',
'sv4cpio' =>; 'application/x-sv4cpio',
'sv4crc' =>; 'application/x-sv4crc',
'tar' =>; 'application/x-tar',
'tcl' =>; 'application/x-tcl',
'tex' =>; 'application/x-tex',
'texinfo' =>; 'application/x-texinfo',
'texi' =>; 'application/x-texinfo',
't' =>; 'application/x-troff',
'tr' =>; 'application/x-troff',
'roff' =>; 'application/x-troff',
'man' =>; 'application/x-troff-man',
'我' =>; 'application/x-troff-me',
'ms' =>; 'application/x-troff-ms',
'ustar' =>; 'application/x-ustar',
'src' =>; 'application/x-wais-source',
'xhtml' =>; 'application/xhtml xml',
'xht' =>; 'application/xhtml xml',
'zip' =>; '應用程式/zip',
'au' =>; '音頻/基本',
'snd' => '音頻/基本',
'mid' => '音頻/midi',
'midi' => '音頻/midi',
'卡爾'=>; '音訊/midi',
'mpga' => '音訊/mpeg',
'mp2' => '音訊/mpeg',
'mp3' => '音訊/mpeg',
'aif' => '音頻/x-aiff',
'aiff' =>; '音頻/x-aiff',
'aifc' =>; '音頻/x-aiff',
'm3u' =>; 'audio/x-mpegurl',
'ram' =>; 'audio/x-pn-realaudio',
'rm' =>; 'audio/x-pn-realaudio',
'rpm' =>; 'audio/x-pn-realaudio-plugin',
'ra' =>; 'audio/x-realaudio',
'wav' =>; '音頻/x-wav',
'pdb' =>; 'chemical/x-pdb',
'xyz' =>; 'chemical/x-xyz',
'bmp' =>; '圖片/bmp',
'gif' => '圖片/gif',
'ief' => '圖片/ief',
'jpeg' =>; '圖片/jpeg',
'jpg' =>; '圖片/jpeg',
'jpe' =>; '圖片/jpeg',
'png' =>; '圖片/png',
'tiff' =>; '圖像/tiff',
'tif' => '圖像/tiff',
'djvu' =>; 'image/vnd.djvu',
'djv' =>; 'image/vnd.djvu',
'wbmp' =>; 'image/vnd.wap.wbmp',
'ras' =>; 'image/x-cmu-raster',
'pnm' =>; 'image/x-portable-anymap',
'pbm' =>; 'image/x-portable-bitmap',
'pgm' =>; 'image/x-portable-graymap',
'ppm' =>; 'image/x-portable-pixmap',
'rgb' =>; 'image/x-rgb',
'xbm' =>; '圖像/x-x點陣圖',
'xpm' =>; 'image/x-xpixmap',
'xwd' =>; 'image/x-xwindowdump',
'igs' =>; '模型/iges',
'iges' => '模型/iges',
'msh' =>; '模型/網格',
'網格' => '模型/網格',
'筒倉' =>; '模型/網格',
'wrl' =>; '模型/vrml',
'vrml' =>; '模型/vrml',
'css' =>; 'text/css',
'html' =>; 'text/html',
'htm' =>; 'text/html',
'asc' =>; '文字/純文字',
'txt' =>; 'text/plain',
'rtx' =>; 'text/richtext',
'rtf' =>; 'text/rtf',
'sgml' =>; 'text/sgml',
'sgm' =>; 'text/sgml',
'tsv' =>; '文字/製表符分隔值',
'wml' =>; 'text/vnd.wap.wml',
'wmls' =>; 'text/vnd.wap.wmlscript',
'etx' =>; 'text/x-setext',
'xsl' =>; 'text/xml',
'xml' =>; 'text/xml',
'mpeg' =>; '視訊/mpeg',
'mpg' =>; '影片/mpeg',
'mpe' =>; '視訊/mpeg',
'qt'=> '影片/quicktime',
'mov' =>; '影片/quicktime',
'mxu' =>; 'video/vnd.mpegurl',
'avi' = >; 'video/x-msvideo',
'電影' =>; 'video/x-sgi-movie',
'ice' =>; 'x-conference/x-cooltalk',

布爾屬性是HTML中的特殊屬性,不需要值即可激活。 1.布爾屬性通過存在與否控制元素行為,如disabled禁用輸入框。 2.它們的工作原理是瀏覽器解析時根據屬性的存在改變元素行為。 3.基本用法是直接添加屬性,高級用法可通過JavaScript動態控制。 4.常見錯誤是誤以為需要設置值,正確寫法應簡潔。 5.最佳實踐是保持代碼簡潔,合理使用布爾屬性以優化網頁性能和用戶體驗。

HTML代碼可以通過在線驗證器、集成工具和自動化流程來確保其清潔度。 1)使用W3CMarkupValidationService在線驗證HTML代碼。 2)在VisualStudioCode中安裝並配置HTMLHint擴展進行實時驗證。 3)利用HTMLTidy在構建流程中自動驗證和清理HTML文件。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTML的功能是定義網頁的結構和內容,其目的在於提供一種標準化的方式來展示信息。 1)HTML通過標籤和屬性組織網頁的各個部分,如標題和段落。 2)它支持內容與表現分離,提升維護效率。 3)HTML具有可擴展性,允許自定義標籤增強SEO。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

HTML、CSS和JavaScript在網頁開發中的角色分別是:HTML負責內容結構,CSS負責樣式,JavaScript負責動態行為。 1.HTML通過標籤定義網頁結構和內容,確保語義化。 2.CSS通過選擇器和屬性控製網頁樣式,使其美觀易讀。 3.JavaScript通過腳本控製網頁行為,實現動態和交互功能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。