WEB安全第六课 HTML语言 之四 HTTP/HTML交互语义 |
从前面章节里的内容我们可以知道,HTTP头域可以对整个响应赋予新的含义(Location、Transfer-Encoding等),还可以改变返回内容的呈现(Content-Type、Content-Disposition),或以其他额外的方式影响客户端环境(Re什esh、Set-Cookie、Cache-Control、Expires等)。
![]() 但假如HTML文档的传递并非通过HTTP协议或直接加载了本地文件呢?很明显,在这种情况下,就没有什么容易的方法能表达或保存以上这些信息了。其中一部分信息还可以较为容易地提取,但缺了像MIME type或字符集这样的关键参数,就会迫使浏览器只能随意地处置文档的编码解析问题了(譬如,文档使用不兼容ASCII字符集的UTF-7、UTF-16和UTF-32格式时,如果无法确定适用的转换方式,压根就无法解析这些HTML文档)。 💪🏝🍪☪🐟 同时,要想在文档里保存原本在协议级别传递的编码信息也颇为笨拙,这需要在文档的开头用<mate http-equiv=...>指令进行各种编码设定。 但在浏览器能读到这条编码设置之前,其实已经需要先做出很多内容相关的判断了,当然此时留有进一步调整的余地,例如,如果是兼容的情况此时还可以进一步调整编码字符集,或者设定Refresh、Set-cookie以及缓存相关的各种指令。 在一份8位ASCII格式的文档里出现以下指令,向浏览器表明该文档的字符集需要进一步被调整为UTF-8而非其他类型,比如不是ISO-8859-1,这么做是可以的: 🤞🏠🍇➡🦄 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 与之相对,以下指令则不能正确解析,因为此时要再切换回不兼容的UTF-32编码格式已经为时太晚了,也就无法再把文档的类型设置为视频格式,或执行跳转而非解析当前文件: 🧓🩳🦯😡👌 <meta http-equiv="Content-Type" content="text/html;charset=utf-32”> <meta http-equiv="Content-Type" content="video/mpeg"> <meta http-equiv="Location" content="http://www.examp.com"> 如果多个http-equiv值之间有冲突,或与早前收到的从服务器端返回HTTP响应头信息有冲突,浏览器的表现行为会不太一致,所以不能盲目地依靠浏览器进行处理。例如,通常起效的是第一个获支持的编码设定charset=value(在这种情况下HTTP响应头的优先级会比<meta>标签的更高),但如果有冲突的是Refresh值,具体表现就往往因浏览器而异了。 👍🗽🍇❌🐢 注意:有的浏览器在文档做正式解析之前,会先尝试着猜测性地提取<metahttp-equiv>的信息,这可能会导致一些令人啼笑皆非的错误。例如,最近在Hrefox4里修复了一个缺陷,因为该浏览器把以下声明误认为是在设置编码字符集: <meta http-equiv="Refresh" content="10; "> 🧠🌕🌶🔞🐂 WEB安全第六课第五节: 评分
帖子热度 1.2万 ℃
|
|
执念大大别生气啊…我们真的有认真看帖啊…只是新手不是很能理解…怕被骂所以也不好回帖啊…
|
作为一个很多概念都会混淆的小白感觉自己在没有实战的情况下…也提不出什么好问题…毕竟电脑现在碰不到很多东西不能实际去研究也不知道帖子里到底说的具体状况…
|
看了楼主的帖子,不由得精神为之一振,自觉七经八脉为之一畅,七窍倒也开了六巧半,自古英雄出少年,楼主年纪轻轻,就有经天纬地之才,定国安邦之智,古人云,卧龙凤雏得一而安天下,而今,天佑我大中华,沧海桑田5000年,中华神州平地一声雷,飞沙走石,大舞迷天,朦胧中,只见顶天立地一金甲天神立于天地间,这人英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒.得此大英雄,实耐之幸也,民之福也,怎不叫人喜极而泣.......古人有少年楼主说为证,少年之楼主如红日初升,其道大光;河出伏流,一泻汪洋;潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶;鹰隼试翼,风尘吸张;奇花初胎,皇皇;干将发硎,有作其芒;天戴其苍,地履其黄;纵有千古,横有八荒;小生对楼主之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心.
|