Ajax在進行web開發中的安全性分析

來源:互聯網
上載者:User

  在進行web開發中ajax的安全性如何呢?現在瀏覽器允許使用者提高他們的安全等級,關閉 JavaScript 技術,禁用瀏覽器中的任何選項。在這種情況下,代碼無論如何都不會工作。此時必須適當地處理問題,這需要單獨的一篇文章來討論,要放到以後了(這個系列夠長了吧?不用擔心,讀完之前也許您就掌握了)。現在要編寫一段健壯但不夠完美的代碼,對於掌握 Ajax 來說就很好了。以後我們還將討論更多的細節。

  Ajax 世界中的請求/響應

  現在我們介紹了 Ajax,對XMLHttpRequest對象以及如何建立它也有了基本的瞭解。如果閱讀得很仔細,您可能已經知道與伺服器上的 Web 應用程式打交道的是 JavaScript 技術,而不是直接提交給那個應用程式的 HTML 表單。

  還缺少什麼呢?到底如何使用XMLHttpRequest。因為這段代碼非常重要,您編寫的每個 Ajax 應用程式都要以某種形式使用它,先看看 Ajax 的基本請求/響應模型是什麼樣吧。

  發出請求

  您已經有了一個嶄新的XMLHttpRequest對象,現在讓它幹點活兒吧。首先需要一個 Web 頁面能夠調用的 JavaScript 方法(比如當使用者輸入文本或者從菜單中選擇一項時)。接下來就是在所有 Ajax 應用程式中基本都雷同的流程:

  1. 從 Web 表單中擷取需要的資料。

  2. 建立要串連的 URL。

  3. 開啟到伺服器的串連。

  4. 設定伺服器在完成後要啟動並執行函數。

  5. 發送請求。

  清單 5 中的樣本 Ajax 方法就是按照這個順序組織的:

  清單 5. 發出 Ajax 請求

  function callServer() {

  // Get the city and state from the web form

  var city = document.getElementById("city").value;

  var state = document.getElementById("state").value;

  // Only go on if there are values for both fields

  if ((city == null) || (city == "")) return;

  if ((state == null) || (state == "")) return;

  // Build the URL to connect to

  var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state);

  // Open a connection to the server

  xmlHttp.open("GET", url, true);

  // Setup a function for the server to run when it's done

  xmlHttp.onreadystatechange = updatePage;

  // Send the request

  xmlHttp.send(null);

  }

  其中大部分代碼意義都很明確。開始的代碼使用基本 JavaScript 代碼擷取幾個表單欄位的值。然後設定一個 PHP 指令碼作為連結的目標。要注意指令碼 URL 的指定方式,city 和 state(來自表單)使用簡單的 GET 參數附加在 URL 之後。

  然後開啟一個串連,這是您第一次看到使用XMLHttpRequest。其中指定了串連方法(GET)和要串連的 URL。最後一個參數如果設為true,那麼將請求一個非同步串連(這就是 Ajax 的由來)。如果使用false,那麼代碼發出請求後將等待伺服器返回的響應。如果設為true,當伺服器在幕後處理請求的時候使用者仍然可以使用表單(甚至調用其他 JavaScript 方法)。

  xmlHttp(要記住,這是XMLHttpRequest對象執行個體)的onreadystatechange屬性可以告訴伺服器在運行完成後(可能要用五分鐘或者五個小時)做什麼。因為代碼沒有等待伺服器,必須讓伺服器知道怎麼做以便您能作出響應。在這個樣本中,如果伺服器處理完了請求,一個特殊的名為updatePage()的方法將被觸發。

  最後,使用值null調用send()。因為已經在請求 URL 中添加了要發送給伺服器的資料(city 和 state),所以請求中不需要發送任何資料。這樣就發出了請求,伺服器按照您的要求工作。

  如果沒有發現任何新鮮的東西,您應該體會到這是多麼簡單明了!除了牢牢記住 Ajax 的非同步特性外,這些內容都相當簡單。應該感激 Ajax 使您能夠專心編寫漂亮的應用程式和介面,而不用擔心複雜的 HTTP 要求/響應代碼。

  清單 5 中的代碼說明了 Ajax 的易用性。資料是簡單的文本,可以作為請求 URL 的一部分。用 GET 而不是更複雜的 POST 發送請求。沒有 XML 和要添加的內容標題部,請求體中沒有要發送的資料;換句話說,這就是 Ajax 的烏托邦。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.