Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲一区二区福利视频,91精品国产爱久久久久,日韩精品一区二区三区中文

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          Nginx配置各種響應(yīng)頭防止XSS,點(diǎn)擊劫持,fra

          Nginx配置各種響應(yīng)頭防止XSS,點(diǎn)擊劫持,frame惡意攻擊

          文作者:討厭自己明明不甘平凡,卻又不好好努力.周常見(jiàn)
          本文鏈接:https://www.cnblogs.com/you-men/p/13387316.html

          為什么要配置HTTP響應(yīng)頭?

          不知道各位有沒(méi)有被各類XSS攻擊、點(diǎn)擊劫持 (ClickJacking、 frame 惡意引用等等方式騷擾過(guò),百度聯(lián)盟被封就有這些攻擊的功勞在里面。為此一直都在搜尋相關(guān)防御辦法,至今效果都不是很好,最近發(fā)現(xiàn)其實(shí)各個(gè)瀏覽器本身提供了一些安全相關(guān)的響應(yīng)頭,使用這些響應(yīng)頭一般只需要修改服務(wù)器配置即可,不需要修改程序代碼,成本很低。至于具體的效果只能是拭目以待了,但是感覺(jué)還是有一定的效果的。

          而這些HTTP響應(yīng)頭在我們部署 Nginx 的時(shí)候經(jīng)常會(huì)被忽略掉,個(gè)人感覺(jué)這是一個(gè)比較嚴(yán)重的“疏忽”,加上還是很有必要的,如果有條件最好是部署一個(gè)適合自己站點(diǎn)的X-Content-Security-Policy響應(yīng)頭。

          點(diǎn)擊劫持

          # 點(diǎn)擊劫持(ClickJacking)是一種視覺(jué)上的欺騙手段。大概有兩種方式,
          
          # 一是攻擊者使用一個(gè)透明的iframe,覆蓋在一個(gè)網(wǎng)頁(yè)上,然后誘使用戶在該頁(yè)面上進(jìn)行操作,此時(shí)用戶將在不知情的情況下點(diǎn)擊透明的iframe頁(yè)面;
          
          # 二是攻擊者使用一張圖片覆蓋在網(wǎng)頁(yè),遮擋網(wǎng)頁(yè)原有位置的含義;
          

          X-Frame-Options響應(yīng)頭

          X-Frame-Options HTTP 響應(yīng)頭是微軟提出來(lái)的一個(gè)HTTP響應(yīng)頭,主要用來(lái)給瀏覽器指示允許一個(gè)頁(yè)面可否在 <frame>, <iframe> 或者 <object> 中展現(xiàn)的標(biāo)記。網(wǎng)站可以使用此功能,來(lái)確保自己網(wǎng)站的內(nèi)容沒(méi)有被嵌到別人的網(wǎng)站中去,也從而避免了點(diǎn)擊劫持(ClickJacking{注1}) 的攻擊。

          使用X-Frame-Options有三個(gè)值

          # DENY
          # 表示該頁(yè)面不允許在frame中展示,即使在相同域名的頁(yè)面中嵌套也不允許
          
          # SAMEORIGIN
          # 表示該頁(yè)面可以在相同域名頁(yè)面的frame中展示
          
          # ALLOW-FROM url
          # 表示該頁(yè)面可以在指定來(lái)源的frame中展示
          

          如果設(shè)置為 DENY,不光在別人的網(wǎng)站 frame 嵌入時(shí)會(huì)無(wú)法加載,在同域名頁(yè)面中同樣會(huì)無(wú)法加載。另一方面,如果設(shè)置為SAMEORIGIN,那么頁(yè)面就可以在同域名頁(yè)面的 frame 中嵌套。

          PS:目前發(fā)現(xiàn)這個(gè)HTTP響應(yīng)頭會(huì)帶來(lái)的問(wèn)題就是百度統(tǒng)計(jì)中的“熱點(diǎn)追蹤(頁(yè)面點(diǎn)擊圖)”功能會(huì)失效,這也說(shuō)明百度統(tǒng)計(jì)的“熱點(diǎn)追蹤(頁(yè)面點(diǎn)擊圖)”使用的是 frame 嵌入引用網(wǎng)頁(yè)的形式,這時(shí)候大家可以使用 X-Frame-Options 的ALLOW-FROM uri來(lái)指定百度統(tǒng)計(jì)域名為可 frame 嵌入域名即可。具體在Nginx里可以采用如下的方式添加響應(yīng)頭

          # add_header X-Frame-Options:ALLOW-FROM https://tongji.baidu.com;
          # add_header X-Frame-Options:SAMEORIGIN;
          

          X-Content-Type-Options響應(yīng)頭

          互聯(lián)網(wǎng)上的資源有各種類型,通常瀏覽器會(huì)根據(jù)響應(yīng)頭的Content-Type字段來(lái)分辨它們的類型。例如:text/html代表html文檔,image/png是PNG圖片,text/css是CSS樣式文檔。然而,有些資源的Content-Type是錯(cuò)的或者未定義。這時(shí),某些瀏覽器會(huì)啟用MIME-sniffing來(lái)猜測(cè)該資源的類型,解析內(nèi)容并執(zhí)行。

          例如,我們即使給一個(gè)html文檔指定Content-Type為text/plain,在IE8-中這個(gè)文檔依然會(huì)被當(dāng)做html來(lái)解析。利用瀏覽器的這個(gè)特性,攻擊者甚至可以讓原本應(yīng)該解析為圖片的請(qǐng)求被解析為JavaScript。在Nginx里通過(guò)下面這個(gè)響應(yīng)頭可以禁用瀏覽器的類型猜測(cè)行為:

          # X-Content-Type-Options HTTP 消息頭相當(dāng)于一個(gè)提示標(biāo)志,被服務(wù)器用來(lái)提示客戶端一定要遵循在 Content-Type 首部中對(duì)  MIME 類型 的設(shè)定,
          # 而不能對(duì)其進(jìn)行修改。這就禁用了客戶端的 MIME 類型嗅探行為,換句話說(shuō),也就是意味著網(wǎng)站管理員確定自己的設(shè)置沒(méi)有問(wèn)題。
          
          # X-Content-Type-Options響應(yīng)頭的缺失使得目標(biāo)URL更易遭受跨站腳本攻擊。
          
          # add_header X-Content-Type-Options: nosniff;
          

          這個(gè)響應(yīng)頭的值只能是nosniff, 可用于IE8+和Chrome

          IE的行為受X-Content-Type-Options的影響,如果Web應(yīng)用沒(méi)有返回Content-Type,那么IE9、IE11將拒絕加載相關(guān)資源。

          # 如果服務(wù)器發(fā)送響應(yīng)頭 “X-Content-Type-Options: nosniff”,則 script 和 styleSheet
          # 元素會(huì)拒絕包含錯(cuò)誤的 MIME 類型的響應(yīng)。這是一種安全功能,有助于防止基于 MIME 類型混淆的攻擊。
          

          X-Content-Security-Policy響應(yīng)頭

          W3C 的 Content Security Policy,簡(jiǎn)稱 CSP。顧名思義,這個(gè)規(guī)范與內(nèi)容安全有關(guān),主要是用來(lái)定義頁(yè)面可以加載哪些資源,減少 XSS 的發(fā)生。

          Chrome 擴(kuò)展已經(jīng)引入了 CSP,通過(guò) manifest.json 中的 content_security_policy 字段來(lái)定義。一些現(xiàn)代瀏覽器也支持通過(guò)響應(yīng)頭來(lái)定義 CSP。下面我們主要介紹如何通過(guò)響應(yīng)頭來(lái)使用 CSP,Chrome 擴(kuò)展中 CSP 的使用可以參考 Chrome 官方文檔。

          # HTTP 響應(yīng)頭Content-Security-Policy允許站點(diǎn)管理者控制用戶代理能夠?yàn)橹付ǖ捻?yè)面加載哪些資源。
          # 除了少數(shù)例外情況,設(shè)置的政策主要涉及指定服務(wù)器的源和腳本結(jié)束點(diǎn)。
          
          # Content-Security-Policy響應(yīng)頭的缺失使得目標(biāo)URL更易遭受跨站腳本攻擊。
          

          瀏覽器兼容性

          # 早期的 Chrome 是通過(guò) X-WebKit-CSP 響應(yīng)頭來(lái)支持 CSP 的,而 firefox 和 IE 則支持 X-Content-Security-Policy,
          # Chrome25 和 Firefox23 開(kāi)始支持標(biāo)準(zhǔn)的 Content-Security-Policy
          

          如何使用

          # 要使用 CSP,只需要服務(wù)端輸出類似這樣的響應(yīng)頭就行了:
          Content-Security-Policy: default-src 'self'
            
          # default-src 是 CSP 指令,多個(gè)指令之間用英文分號(hào)分割;'self' 是指令值,多個(gè)指令值用英文空格分割。目前,有這些 CSP 指令:
          

          從上面的介紹可以看到,CSP 協(xié)議可以控制的內(nèi)容非常多。而且如果不特別指定 'unsafe-inline' 時(shí),頁(yè)面上所有 inline 樣式和腳本都不會(huì)執(zhí)行;不特別指定 'unsafe-eval',頁(yè)面上不允許使用 new Function,setTimeout,eval 等方式執(zhí)行動(dòng)態(tài)代碼。在限制了頁(yè)面資源來(lái)源之后,被 XSS 的風(fēng)險(xiǎn)確實(shí)小不少。

          當(dāng)然,僅僅依靠 CSP 來(lái)防范 XSS 是遠(yuǎn)遠(yuǎn)不夠的,不支持全部瀏覽器是它的硬傷。不過(guò),鑒于低廉的開(kāi)發(fā)成本,加上也沒(méi)什么壞處。

          StrictTransportSecurity響應(yīng)頭

          什么是StrictTransportSecurity?

          一個(gè)網(wǎng)站接受一個(gè)HTTP的請(qǐng)求,然后跳轉(zhuǎn)到HTTPS,用戶可能在開(kāi)始跳轉(zhuǎn)前,通過(guò)沒(méi)有加密的方式和服務(wù)器對(duì)話,比如,用戶輸入http://foo.com或者直接foo.com。這樣存在中間人攻擊潛在威脅,跳轉(zhuǎn)過(guò)程可能被惡意網(wǎng)站利用來(lái)直接接觸用戶信息,而不是原來(lái)的加密信息。網(wǎng)站通過(guò)HTTP Strict Transport Security通知瀏覽器,這個(gè)網(wǎng)站禁止使用HTTP方式加載,瀏覽器應(yīng)該自動(dòng)把所有嘗試使用HTTP的請(qǐng)求自動(dòng)替換為HTTPS請(qǐng)求。

          為什么要開(kāi)啟

          有的網(wǎng)站開(kāi)啟了https,但為了照顧用戶的使用體驗(yàn)(因?yàn)橛脩艨偸呛苜嚨模话悴粫?huì)主動(dòng)鍵入https,而是直接輸入域名, 直接輸入域名訪問(wèn),默認(rèn)就是http訪問(wèn))同時(shí)也支持http訪問(wèn),當(dāng)用戶http訪問(wèn)的時(shí)候,就會(huì)返回給用戶一個(gè)302重定向,重定向到https的地址,然后后續(xù)的訪問(wèn)都使用https傳輸,這種通信模式看起來(lái)貌似沒(méi)有問(wèn)題,但細(xì)致分析,就會(huì)發(fā)現(xiàn)種通信模式也存在一個(gè)風(fēng)險(xiǎn),那就是這個(gè)302重定向可能會(huì)被劫持篡改,如果被改成一個(gè)惡意的或者釣魚(yú)的https站點(diǎn),然后,你懂得,一旦落入釣魚(yú)站點(diǎn),數(shù)據(jù)還有安全可言嗎?

          對(duì)于篡改302的攻擊,建議服務(wù)器開(kāi)啟HTTP Strict Transport Security功能,這個(gè)功能的含義是:

          當(dāng)用戶已經(jīng)安全的登錄開(kāi)啟過(guò)htst功能的網(wǎng)站 (支持hsts功能的站點(diǎn)會(huì)在響應(yīng)頭中插入:Strict-Transport-Security) 之后,支持htst的瀏覽器(比如chrome. firefox)會(huì)自動(dòng)將這個(gè)域名加入到HSTS列表,下次即使用戶使用http訪問(wèn)這個(gè)網(wǎng)站,支持htst功能的瀏覽器就會(huì)自動(dòng)發(fā)送https請(qǐng)求(前提是用戶沒(méi)有清空緩存,如果清空了緩存第一次訪問(wèn)還是明文,后續(xù)瀏覽器接收到服務(wù)器響應(yīng)頭中的Strict-Transport-Security,就會(huì)把域名加入到hsts緩存中,然后才會(huì)在發(fā)送請(qǐng)求前將http內(nèi)部轉(zhuǎn)換成https),而不是先發(fā)送http,然后重定向到https,這樣就能避免中途的302重定向URL被篡改。進(jìn)一步提高通信的安全性。

          上面是我自己的理解,下面是owasp中文站點(diǎn)關(guān)于hsts的描述:

          HSTS的作用是強(qiáng)制客戶端(如瀏覽器)使用HTTPS與服務(wù)器創(chuàng)建連接。服務(wù)器開(kāi)啟HSTS的方法是,當(dāng)客戶端通過(guò)HTTPS發(fā)出請(qǐng)求時(shí),在服務(wù)器返回的超文本傳輸協(xié)議響應(yīng)頭中包含Strict-Transport-Security字段。非加密傳輸時(shí)設(shè)置的HSTS字段無(wú)效。

          比如,https://example.com/ 的響應(yīng)頭含有Strict-Transport-Security: max-age=31536000; includeSubDomains。這意味著兩點(diǎn):

          在接下來(lái)的一年(即31536000秒)中,瀏覽器只要向example.com或其子域名發(fā)送HTTP請(qǐng)求時(shí),必須采用HTTPS來(lái)發(fā)起連接。比如,用戶點(diǎn)擊超鏈接或在地址欄輸入 http://www.example.com/ ,瀏覽器應(yīng)當(dāng)自動(dòng)將 http 轉(zhuǎn)寫(xiě)成 https,然后直接向 https://www.example.com/ 發(fā)送請(qǐng)求。

          在接下來(lái)的一年中,如果 example.com 服務(wù)器發(fā)送的TLS證書(shū)無(wú)效,用戶不能忽略瀏覽器警告繼續(xù)訪問(wèn)網(wǎng)站。

          HSTS可以用來(lái)抵御SSL剝離攻擊。SSL剝離攻擊是中間人攻擊的一種,由Moxie Marlinspike于2009年發(fā)明。他在當(dāng)年的黑帽大會(huì)上發(fā)表的題為“New Tricks For Defeating SSL In Practice”的演講中將這種攻擊方式公開(kāi)。SSL剝離的實(shí)施方法是阻止瀏覽器與服務(wù)器創(chuàng)建HTTPS連接。它的前提是用戶很少直接在地址欄輸入https://,用戶總是通過(guò)點(diǎn)擊鏈接或3xx重定向,從HTTP頁(yè)面進(jìn)入HTTPS頁(yè)面。所以攻擊者可以在用戶訪問(wèn)HTTP頁(yè)面時(shí)替換所有https://開(kāi)頭的鏈接為http://,達(dá)到阻止HTTPS的目的。

          HSTS可以很大程度上解決SSL剝離攻擊,因?yàn)橹灰獮g覽器曾經(jīng)與服務(wù)器創(chuàng)建過(guò)一次安全連接,之后瀏覽器會(huì)強(qiáng)制使用HTTPS,即使鏈接被換成了HTTP

          另外,如果中間人使用自己的自簽名證書(shū)來(lái)進(jìn)行攻擊,瀏覽器會(huì)給出警告,但是許多用戶會(huì)忽略警告。HSTS解決了這一問(wèn)題,一旦服務(wù)器發(fā)送了HSTS字段,用戶將不再允許忽略警告。

          0×03. Strict-Transport-Security的一些不足

          用戶首次訪問(wèn)某網(wǎng)站是不受HSTS保護(hù)的。這是因?yàn)槭状卧L問(wèn)時(shí),瀏覽器還未收到HSTS,所以仍有可能通過(guò)明文HTTP來(lái)訪問(wèn)。解決這個(gè)不足目前有兩種方案,一是瀏覽器預(yù)置HSTS域名列表,Google Chrome、Firefox、Internet Explorer和Spartan實(shí)現(xiàn)了這一方案。二是將HSTS信息加入到域名系統(tǒng)記錄中。但這需要保證DNS的安全性,也就是需要部署域名系統(tǒng)安全擴(kuò)展。截至2014年這一方案沒(méi)有大規(guī)模部署。

          由于HSTS會(huì)在一定時(shí)間后失效(有效期由max-age指定),所以瀏覽器是否強(qiáng)制HSTS策略取決于當(dāng)前系統(tǒng)時(shí)間。部分操作系統(tǒng)經(jīng)常通過(guò)網(wǎng)絡(luò)時(shí)間協(xié)議更新系統(tǒng)時(shí)間,如Ubuntu每次連接網(wǎng)絡(luò)時(shí),OS X Lion每隔9分鐘會(huì)自動(dòng)連接時(shí)間服務(wù)器。攻擊者可以通過(guò)偽造NTP信息,設(shè)置錯(cuò)誤時(shí)間來(lái)繞過(guò)HSTS。解決方法是認(rèn)證NTP信息,或者禁止NTP大幅度增減時(shí)間。比如Windows 8每7天更新一次時(shí)間,并且要求每次NTP設(shè)置的時(shí)間與當(dāng)前時(shí)間不得超過(guò)15小時(shí)

          X-XSS-Protection響應(yīng)頭

          顧名思義,這個(gè)響應(yīng)頭是用來(lái)防范XSS的。最早我是在介紹IE8的文章里看到這個(gè),現(xiàn)在主流瀏覽器都支持,并且默認(rèn)都開(kāi)啟了XSS保護(hù),用這個(gè)header可以關(guān)閉它。它有幾種配置:

          0:# 禁用XSS保護(hù);
          1:# 啟用XSS保護(hù);
          1; # mode=block:?jiǎn)⒂肵SS保護(hù),并在檢查到XSS攻擊時(shí),停止渲染頁(yè)面(例如IE8中,檢查到攻擊時(shí),整個(gè)頁(yè)面會(huì)被一個(gè)#替換);
          
          # HTTP X-XSS-Protection 響應(yīng)頭是 Internet Explorer,Chrome 和 Safari 的一個(gè)特性,
          # 當(dāng)檢測(cè)到跨站腳本攻擊 (XSS)時(shí),瀏覽器將停止加載頁(yè)面。
          
          # X-XSS-Protection響應(yīng)頭的缺失使得目標(biāo)URL更易遭受跨站腳本攻擊。
          
          # 瀏覽器提供的XSS保護(hù)機(jī)制并不完美,但是開(kāi)啟后仍然可以提升攻擊難度,總之沒(méi)有特別的理由,不要關(guān)閉它。
          

          Nginx配置方法如下

          # add_header X-Xss-Protection: 1;
          # add_header X-Xss-Protection: mod=block;
          

          實(shí)際案例

          Google+

          使用功能了這幾個(gè)文本提到的響應(yīng)頭

          # x-content-type-options: nosniff
          # x-frame-options: SAMEORIGIN
          # x-xss-protection: 1; mode=block
          

          Twitter

          # strict-transport-security: max-age=631138519
          # x-frame-options: SAMEORIGIN
          # x-xss-protection: 1; mode=block
          

          PayPal

          # X-Frame-Options: SAMEORIGIN
          # Strict-Transport-Security: max-age=14400
          

          Facebook

          配置了詳細(xì)的CSP,關(guān)閉了XSS保護(hù)

          elenium中元素定位正確但是操作失敗的原因無(wú)外乎以下4種:

          一、頁(yè)面沒(méi)加載好解決方法:添加等待方法,如:time.sleep()

          二、頁(yè)面提交需要等待給數(shù)據(jù)后臺(tái)解決方法:添加等待方法,如:time.sleep()

          三、瀏覽器沒(méi)有以最大化方式打開(kāi),導(dǎo)致元素被隱藏,定位不到解決方法:將網(wǎng)頁(yè)最大化:driver.maximize_window()如果屏幕比例固定,分辨率有限,通過(guò)網(wǎng)頁(yè)最大化也沒(méi)辦法解決的話,可以通過(guò)執(zhí)行JS方法來(lái)實(shí)現(xiàn)。

          browser.execute_script('window.scrollBy(200,0)')  #此處(200,0)為網(wǎng)頁(yè)偏移坐標(biāo),200為橫坐標(biāo),0為縱坐標(biāo)
          #window.scrollBy()為JS方法# 

          四、網(wǎng)頁(yè)中存在多個(gè)frame框架,所定位的元素不在當(dāng)前frame中。所以盡管元素明明看起來(lái)是定位正確的,但是點(diǎn)擊無(wú)效。frame框架作用:frame對(duì)象代表一個(gè)HTML框架,frame就是一個(gè)子窗口,在里面可以加載網(wǎng)頁(yè),內(nèi)部子窗口進(jìn)行刷新的時(shí)候,不會(huì)影響外部窗口。

          對(duì)于嵌套多個(gè)frame的頁(yè)面,操作時(shí)需要層層跳轉(zhuǎn),跳到元素所在的frame。

          frame標(biāo)簽有frameset、frame、iframe三種,frameset與其他普通標(biāo)簽一樣,不會(huì)影響元素的定位;而frame與iframe的切換方法是一樣的。

          frame 下是個(gè)獨(dú)立的HTML文件:

          解決方法:可以利用selenium中的switch_to.frame()方法來(lái)實(shí)現(xiàn)frame之間的跳轉(zhuǎn)。

          具體操作如下:

          1.如何對(duì)frame進(jìn)行切換?利用switch_to.frame()方法來(lái)進(jìn)行切換。

          1

          switch_to.frame(reference)


          reference是傳入的參數(shù),用來(lái)定位frame,可以是id,name,tag name等。假設(shè)有下面HTML代碼:

          12345678

          <html lang="en"><head> <title>FrameTest</title></head><body><iframe src="myframe.html" id="frame1" name="myframe"></iframe></body></html>

          則想要切換到上述iframe的方法有:

          12345

          driver.switch_to.frame(0) #用frame的index定位,第一個(gè)是0driver.switch_to.frame("frame1") #用frame的id來(lái)定位driver.switch_to.frame("myframe") #用name來(lái)定位driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) #用iframe對(duì)應(yīng)的tag name來(lái)定位driver.switch_to_frame(driver.find_element_by_xpath("//iframe[contains(@src,'myframe')]")) #利用xpath來(lái)定位


          2.如何從子frame切換回主文檔?切換到子frame后就無(wú)法再對(duì)主文檔元素進(jìn)行操作了,所以要切換回主文檔。方法為:driver.switch_to.default_content()

          driver.switch_to.default_content()


          3.多層frame如何切換?如果有多層frame要逐層進(jìn)行切換,例如下列多個(gè)frame嵌套的HTML代碼:

          12345

          <html> <iframe id="frame1"> <iframe id="frame2" / > </iframe></html>


          (1)從主文檔切換到frame 2:

          driver.switch_to.frame('frame1')  #先從主文檔切換到frame1
          driver.switch_to.frame('frame2')  #再?gòu)膄rame1切換到frame2
          

          (2)從frame2切回到frame1:從frame2再切回frame1,這里selenium給我們提供了一個(gè)方法能夠從子frame切回到父frame,而不用我們切回主文檔再切進(jìn)來(lái)。

          1

          driver.switch_to.parent_frame() # 如果當(dāng)前已是主文檔,則無(wú)效果

          有了parent_frame()這個(gè)相當(dāng)于后退的方法,我們可以隨意切換不同的frame,隨意的跳來(lái)跳去了。

          總結(jié)下,遇到frame跳轉(zhuǎn)問(wèn)題,利用以下三個(gè)方法便可以搞定:

          123

          driver.switch_to.frame(reference)driver.switch_to.parent_frame()driver.switch_to.default_content()

          五、元素屬性為動(dòng)態(tài)屬性,看著定位已經(jīng)正確,但是隨著鼠標(biāo)點(diǎn)擊位置不同,元素的屬性發(fā)生變化。

          例如下面這個(gè)頁(yè)面的目錄的class屬性就隨著該元素是否被點(diǎn)擊而發(fā)生變化:解決方法:換元素的另一個(gè)固定屬性來(lái)進(jìn)行定位。

          六、頁(yè)面元素在頁(yè)面打開(kāi)的時(shí)候被其他彈出窗口擋住。解決方法:添加關(guān)閉彈出窗口步驟。

          何使用 <noframes> 標(biāo)簽

          本例演示:如何使用 <noframes> 標(biāo)簽。

          <html>
          <frameset cols="25%,25%,25%">
           <frame src="/example/html/frame_a.html">
           <frame src="/example/html/frame_b.html">
           <frame src="/example/html/frame_c.html">
          <noframes>
          <body>您的瀏覽器無(wú)法處理框架!</body>
          </noframes>
          </frameset>
          </html>
          

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          混合框架結(jié)構(gòu)

          本例演示如何制作含有三份文檔的框架結(jié)構(gòu),同時(shí)將他們混合置于行和列之中。

          <html>
          <frameset rows="50%,50%">
          <frame src="/example/html/frame_a.html">
          <frameset cols="25%,75%">
          <frame src="/example/html/frame_b.html">
          <frame src="/example/html/frame_c.html">
          </frameset>
          </frameset>
          </html>
          

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          含有 noresize="noresize" 屬性的框架結(jié)構(gòu)

          本例演示 noresize 屬性。在本例中,框架是不可調(diào)整尺寸的。在框架間的邊框上拖動(dòng)鼠標(biāo),你會(huì)發(fā)現(xiàn)邊框是無(wú)法移動(dòng)的。

          <html>
          <frameset cols="50%,*,25%">
           <frame src="/example/html/frame_a.html" noresize="noresize" />
           <frame src="/example/html/frame_b.html" />
           <frame src="/example/html/frame_c.html" />
          </frameset>
          </html>
          

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          導(dǎo)航框架

          本例演示如何制作導(dǎo)航框架。導(dǎo)航框架包含一個(gè)將第二個(gè)框架作為目標(biāo)的鏈接列表。名為 "contents.htm" 的文件包含三個(gè)鏈接。

          <html>
          <frameset cols="120,*">
           <frame src="/example/html/html_contents.html" >
           <frame src="/example/html/frame_a.html" name="showframe">
          </frameset>
          </html>
          

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          內(nèi)聯(lián)框架

          本例演示如何創(chuàng)建內(nèi)聯(lián)框架(HTML 頁(yè)中的框架)。

          <html>
          <body>
          <iframe wigth="200" height="100" src="/i/eg_landscape.jpg"></iframe>
          <p>一些老的瀏覽器不支持 iframe。</p>
          <p>如果得不到支持,iframe 是不可見(jiàn)的。</p>
          </body>
          </html>
          

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          跳轉(zhuǎn)至框架內(nèi)的一個(gè)指定的節(jié)

          本例演示兩個(gè)框架。其中的一個(gè)框架設(shè)置了指向另一個(gè)文件內(nèi)指定的節(jié)的鏈接。這個(gè)"link.htm"文件內(nèi)指定的節(jié)使用 <a name="C9"> 進(jìn)行標(biāo)識(shí)。

          <html>
          <frameset cols="20%,80%">
           <frame src="/example/html/frame_a.html">
           <frame src="/example/html/link.html#C9">
          </frameset>
          </html>
          

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          使用框架導(dǎo)航跳轉(zhuǎn)至指定的節(jié)

          本例演示兩個(gè)框架。左側(cè)的導(dǎo)航框架包含了一個(gè)鏈接列表,這些鏈接將第二個(gè)框架作為目標(biāo)。第二個(gè)框架顯示被鏈接的文檔。導(dǎo)航框架其中的鏈接指向目標(biāo)文件中指定的節(jié)。

          <html>
          <frameset cols="200,*">
          <frame src="/example/html/content.html">
          <frame src="/example/html/link.html" name="showframe">
          </frameset>
          </html>
          

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          HTML基礎(chǔ)教程:框架實(shí)例大合集

          希望以上可以解決你們心中的一些疑惑,其中可能會(huì)有不對(duì)的地方或是需要改進(jìn)的地方,歡迎留言糾正。感覺(jué)還不錯(cuò)歡迎關(guān)注收藏轉(zhuǎn)載哦


          主站蜘蛛池模板: 奇米精品一区二区三区在线观看| 少妇激情AV一区二区三区| 丝袜无码一区二区三区| 亚洲国产一区明星换脸| 波多野结衣久久一区二区| 久久99国产精一区二区三区| 好吊妞视频一区二区| 日本免费一区二区三区| 亚洲国产专区一区| 波多野结衣中文一区| 日韩视频免费一区二区三区| 无码av人妻一区二区三区四区| 亚洲爆乳精品无码一区二区三区 | eeuss鲁片一区二区三区| 91成人爽a毛片一区二区| 精品国产不卡一区二区三区| 在线播放精品一区二区啪视频| 精品无码AV一区二区三区不卡| 日韩人妻精品一区二区三区视频 | 无码精品人妻一区二区三区中| 丰满人妻一区二区三区视频53| 亚洲AⅤ无码一区二区三区在线| 精品在线一区二区三区| 男人的天堂精品国产一区| 日韩av片无码一区二区三区不卡| 国产日韩精品一区二区三区| 精品国产一区二区三区在线| 精品国产一区二区三区www| 国产伦精品一区二区三区免费迷| 国产在线精品观看一区| 精品人妻一区二区三区四区| 国产成人一区在线不卡| 国产免费无码一区二区| 人妻夜夜爽天天爽爽一区| 亚洲国产精品一区二区三区在线观看| 国产香蕉一区二区在线网站| 精产国品一区二区三产区| 午夜精品一区二区三区在线视| 狠狠色婷婷久久一区二区三区 | 精品一区二区三区在线观看l | 国精品无码一区二区三区在线|