DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 關於Ajax技術的注意事項
關於Ajax技術的注意事項
編輯:關於JavaScript     

16.6  關於Ajax技術的注意事項

使用JavaScript來實現客戶端/服務器的通信,極大地擴展了JavaScript語言的功能。但是,使用這種強大功能的同時,也帶來了一些需要注意的問題。

在這一小節中,前兩個問題將分別討論使用Ajax技術時“同源策略”的問題,以及使用XMLHttpRequest對象時所帶來的ActiveX控件問題。第三個問題將討論Ajax的可用性問題,即Ajax技術改變了頁面中的某些方面,並如何解決這些問題。

16.6.1  同源策略

早在Netscape Navigator 2.0浏覽器時代,JavaScript代碼就不能訪問非同源的腳本或者頁面。這是浏覽器所遵循的一個重要的安全措施。否則,一些惡意代碼的編寫者就能在任何地方執行惡意的代碼。同源策略指的是,僅當兩個頁面的協議(HTTP)、端口號(默認時為80端口)和主機名相同時,這兩個頁面才是同源的。

例如,下面這兩個頁面:

●       頁面1的位置為http://www.site.com/folder/mypage1.htm

●       頁面2的位置為http://www.site.com/folder10/mypage2.htm

根據同源策略的要求,這兩個頁面是同源的。因為這兩個頁面具有相同的主機名(www.site.com),使用了相同的協議(HTTP),並訪問了相同的端口(這兩個頁面並沒有聲明端口,因此使用的是默認的80端口)。由於這兩個頁面是同源的,因此一個頁面中的JavaScript將可以訪問另一個頁面。

再如下面的兩個頁面:

●       頁面1的位置為http://www.site.com/folder/mypage1.htm

●       頁面2的位置為https://www.site.com/folder/mypage2.htm

顯然,這兩個頁面並不是同源的。雖然這兩個頁面的主機名和端口號是相同的,但是卻使用了不同的協議。頁面1使用的是HTTP協議,而頁面2使用的是HTTPS協議。這一差異使得浏覽器將這兩個頁面視為兩個不同的源。因此,其中一個頁面中的JavaScript將無法訪問另一個頁面。

那麼,這與Ajax技術有什麼關系呢?由於Ajax技術中大量使用了JavaScript,因此同源策略幾乎影響到Ajax的每一方面。例如,由於同源策略的限制,XMLHttpRequest對象將無法訪問任何非同源的文件。但是,我們可以采用一種很簡單方式來解決這一問題,即使用一個同源的頁面作為代理(proxy),通過該代理來獲取另一個非同源服務器上的數據。同源策略同樣影響到使用frame/iframe方式來實現的Ajax技術,即使兩個頁面位於同一個框架集中,但是如果這兩個頁面不同源的話,JavaScript將無法在這兩個頁面之間實現交互。

16.6.2  ActiveX對Ajax的影響

XMLHttpRequest對象的一個弊端在於它是一個ActiveX控件,因此只有在Windows系統的IE浏覽器中才可以使用XMLHttpRequest對象。盡管IE浏覽器是當前市場占有率最高的浏覽器,而且它的市場占有率短期內似乎不會發生什麼改變。但是,由於在過去幾年中,圍繞 ActiveX控件產生了很多的安全性問題,特別是很多惡意廣告軟件和間諜軟件通過用戶計算機對ActiveX控件的信賴而安裝在用戶的計算機中。因此,ActiveX控件的使用對用戶的計算機安全造成了一定的隱患。

由於人們對安全性問題越來越重視,Microsoft采取了一些措施,以嚴格限制對ActiveX控件或插件對象的訪問,這樣不但使浏覽器變得更加安全,還有效地避免了惡意的攻擊。但是這樣一來,如果用戶完全禁用了ActiveX控件,或者你的站點被標記為某一特定的安全區域,就可能使得ActiveX控件對象無法創建,從而導致基於XMLHttpRequest對象的Ajax程序無法正常工作。

16.6.3  可用性問題

Ajax技術打破了傳統Web應用程序和Web頁面的模式。Ajax允許創建類似於普通桌面應用程序的Web應用,而不是充滿了Web味(webbish)的頁

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved