搜尋
首頁web前端js教程ajax的工作原理你知道嗎? ajax的簡介和原理的詳細總結(經典)

本篇文章主要的介紹了關於ajax的簡介,還有關於ajax的一些應用原理等,現在就讓我們一起來看這篇文章吧

#Ajax工作原理

  在寫這篇文章之前,曾經寫過一篇關於AJAX技術的隨筆,不過涉及到的方面很窄,對AJAX技術的背景、原理、優缺點等各方面都很少涉及null。這次寫這篇文章的背景是因為公司需要對內部程式設計師做一個訓練。專案經理找到了我,並且徵詢我培訓的主題,考慮到之前Javascript、CSS等WEB開發技術都已經講解過了,所以決定針對AJAX這一塊做一個比較系統的培訓,所以這篇文章實際上是一個培訓的材料。

      在這篇文章中,我將從10個面向來對AJAX技術進行系統性的解說。

1、ajax技術的背景

      不可否認,ajax技術的流行得益於google的大力推廣,正是由於google earth、google suggest以及gmail等對ajax技術的廣泛應用,催生了ajax的流行。而這也讓微軟感到無比的尷尬,因為早在97年,微軟便已經發明了ajax中的關鍵技術,並且在99年IE5推出之時,它便開始支持XmlHttpRequest對象,並且微軟之前已經開始在它的一些產品中應用ajax,比如說MSDN網站選單中的一些應用。遺憾的是,不知道出於什麼想法,當時微軟發明了ajax的核心技術之後,並沒有看到它的潛力而加以發展和推廣,而是將它擱置起來。對這一點來說,我個人是覺得非常奇怪的,因為以微軟的資源和它的戰略眼光來說,應該不會看不到ajax技術的前景,唯一的解釋也許就是因為當時它的主要競爭對手Netscape的消失反而使它變得麻痺和遲鈍,畢竟巨人也有打盹的時候,例如IBM曾經在對微軟戰略上的失誤。正是這次的失誤,成就了它現在的競爭對手google在ajax方面的領先地位,而事實上google目前在ajax技術方面的領先是微軟所無法達到的,這一點在後面我講述ajax缺陷的時候也會提到。現在微軟也意識到了這個問題,因此它也開始在ajax領域奮起直追,比如說推出它自己的ajax框架atlas,並且在.NET2.0也提供了一個用來實現異步回調的接口,即ICallBack接口。那麼微軟為什麼對自己在ajax方面的落後如此緊張呢?現在就讓我們來分析一下ajax技術後面隱藏的深刻意義。

2、ajax技術的意義

#

     我們在平時的開發中都多多少少的接觸或應用到了ajax,談到ajax技術的意義,我們關注得最多的毫無疑問是提升用戶的體驗。但是,如果我們結合未來電腦和網路的發展趨勢,我們會發現ajax技術在某些方面正好代表了這種趨勢。為什麼要這樣說呢?我們知道,自從電腦出現以來,一直是桌面軟體佔據著絕對主導的地位,但是互聯網的出現和成功使這一切開始發生著微​​妙的變化。相當一部分的人都相信,遲早有一天,數據和電腦軟體將會從桌面轉移到網路。也就是說,將來的電腦有可能拋棄笨重的硬碟,而直接從網路來獲取數據和服務,我記得我念大學的時候,有位教授給我們上課的時候,曾經設想過這樣一種情景,也許在將來的電腦桌面上,沒有任何多餘的軟體和程序,而僅僅只有一個IE,雖然現在看起來我們距離這一天還很遙遠,並且這其中還有很多的問題需要解決,但是我覺得這個並非夢想,而是遲早將實現的現實。那麼,這其中的主要問題就是互聯網的連接不穩定,誰也不願意看著自己的電腦從伺服器一點一滴的下載數據,那麼,ajax是不是解決了這個問題呢,說實話,與其說ajax解決了這個問題,倒不如它只是掩蓋了這個問題,它只是在伺服器和客戶端之間充當了一個緩衝器,讓用戶誤以為服務沒有中斷。精確的說,ajax並不能提高從伺服器端下載資料的速度,而只是使這個等待不那麼令人沮喪。但正是這一點就足以產生巨大的影響和震動,它實際上也對桌面軟體產生了巨大的衝擊。這一點我用一個例子來說明,我們可以比較一下Outlook Express和Gmail,前者是典型的桌面軟體,後者是ajax所實現的B/S模式,實際上後者目前已經在慢慢取代前者了, Gmail在收發郵件的時候已經和Outlook Express的功能幾乎沒有差別了,而且它不需要安裝客戶端程式。這就是為什麼微軟對ajax所帶來的衝擊有著如此的恐懼心理,並且在它前不久所進行的調查之中,將google看做他們未來十年內的主要競爭對手的主要原因之一。當然,這種變化也不會將桌面軟體全部淘汰,現有的瀏覽器還沒有一個能像PhotoShop等桌面程式那樣處理複雜的影像。但是我們也不能忽略它所帶來的影響和衝擊。

3、關於ajax的名字

    ajax 的全名是Asynchronous JavaScript and XML,其中,Asynchronous 是異步的意思,它有別於傳統web開發中採用的同步的方式。

4、關於同步和非同步

非同步傳輸是面向字元的傳輸,它的單位是字元;而同步傳輸是面向位元的傳輸,它的單位是楨,它傳輸的時候要求接受方和發送方的時鐘是保持一致的。

具體來說,非同步傳輸是將位元分成小組來進行傳送。一般每個小組是一個8位字符,在每個小組的頭部和尾部都有一個開始位和一個停止位,它在傳送過程中接收方和發送方的時鐘不要求一致,也就是說,發送方可以在任何時刻發送這些小組,而接收方並不知道它何時到達。一個最明顯的例子就是電腦鍵盤和主機的通信,按下一個鍵的同時向主機發送一個8位元的ASCII代碼,鍵盤可以在任何時刻發送代碼,這取決於用戶的輸入速度,內部的硬體必須能夠在任何時刻接收一個鍵入的字元。這是一個典型的非同步傳輸過程。非同步傳輸存在一個潛在的問題,即接收方並不知道資料會在什麼時候到達。在它檢測到數據並做出回應之前,第一個比特已經過去了。這就像有人出乎意料地從後面走上來跟你說話,而你沒來得及反應過來,漏掉了最前面的幾個字。因此,每次非同步傳輸的訊息都以一個起始位元開頭,它通知接收方資料已經到達了,這就給了接收方回應、接收和快取資料位元的時間;在傳輸結束時,一個停止位元表示該次傳輸訊息的終止。依照慣例,空閒(沒有傳送資料)的線路實際攜帶著一個代表二進位1的訊號。步傳輸的開始位元使訊號變成0,其他的位元使訊號隨傳輸的資料資訊而變化。最後,停止位元使訊號重新變回1,該訊號一直保持到下一個開始位元到達。例如在鍵盤上數字“1”,按照8位元的擴展ASCII編碼,將發送“00110001”,同時需要在8位元的前面加一個起始位,後面一個停止位。

同步傳輸的位元分組則大得多。它不是獨立地發送每個字符,每個字符都有自己的開始位和停止位,而是把它們組合起來一起發送。我們將這些組合稱為資料幀,或簡稱為幀。

  資料幀的第一部分包含一組同步字符,它是一個獨特的比特組合,類似於前面提到的起始位,用於通知接收方一個幀已經到達,但它同時還能確保接收方的採樣速度和比特的到達速度保持一致,使收發雙方進入同步。

  幀的最後一部分是一個幀結束標記。與同步字元一樣,它也是一個獨特的位元串,類似於前面提到的停止位,用於表示在下一幀開始之前沒有別的即將到達的資料了。

  同步傳輸通常比非同步傳輸快速得多。接收方不必對每個字元進行開始和停止的操作。一旦檢測到幀同步字符,它就在接下來的資料到達時接收它們。另外,同步傳輸的開銷也比較少。例如,一個典型的幀可能有500位元組(即4000位元)的數據,其中可能只包含100位元的開銷。這時,增加的位元組使傳輸的位元總數增加2.5%,這與非同步傳輸中25 %的增值要小得多。隨著資料幀中實際資料位元的增加,開銷位元所佔的百分比將會相應地減少。但是,資料位元越長,快取資料所需的緩衝區也越大,這就限制了一個幀的大小。另外,幀越大,它佔據傳輸媒體的連續時間也越長。在極端的情況下,這將導致其他用戶等太久。

     了解了同步與非同步的概念之後,大家應該對ajax為什麼可以提升使用者體驗應該比較清晰了,它是利用非同步請求方式的。打個比方,如果現在你家裡所在的小區因某種情況而面臨停水,現在有關部門公佈了兩種方案,一是完全停水8個小時,在這8個小時內完全停水,8個小時後恢復正常。二是不完全停水10 個小時,在這10個小時內水沒有完全斷,只是流量比原來小了很多,在10個小時後恢復正常流量,那麼,如果是你會選擇哪種方式呢?顯然是後者。

5、ajax所包含的技術

    大家都知道ajax並非一種新的技術,而是幾種原有技術的結合體。它是由下列技術組合而成。

   1.使用CSS和XHTML來表示。

   2. 使用DOM模型互動和動態顯示。

   3.使用XMLHttpRequest來和伺服器進行非同步通訊。

   4.使用javascript來綁定和呼叫。

在上面幾中技術中,除了XmlHttpRequest物件以外,其它所有的技術都是基於web標準並且已經得到了廣泛使用的,XMLHttpRequest雖然目前還沒有被W3C所採納,但是它已經是一個事實的標準,因為目前幾乎所有的主流瀏覽器都支援它。

6、ajax原理和XmlHttpRequest物件

#  Ajax的原理簡單來說透過XmlHttpRequest物件來向伺服器發異步請求,從伺服器獲得數據,然後用javascript來操作DOM而更新頁面。這其中最關鍵的一步就是從伺服器取得請求資料。要清楚這個過程和原理,我們必須對 XMLHttpRequest有所了解。

 XMLHttpRequest是ajax的核心機制,它是在IE5中首先引入的,是一種支援非同步請求的技術。簡單的說,也就是javascript可以及時向伺服器提出請求和處理回應,而不阻塞使用者。達到無刷新的效果。

   所以我們先從XMLHttpRequest講起,來看看它的運作方式。

   首先,我們先來看看XMLHttpRequest這個物件的屬性。

    它的屬性有:

    onreadystatechange  每次狀態改變所觸發事件的事件處理程序。

    responseText     從伺服器程序傳回資料的字串形式。

    responseXML    從伺服器程序傳回的DOM相容的文件資料物件。

    status           從伺服器返回的數位程式碼,例如常見的404(未找到)和200(已就緒)

 物件狀態值

    0 (未初始化) 物件已建立,但是尚未初始化(尚未呼叫open方法)

    1 (初始化) 物件已建立,尚未呼叫send方法

    2 (發送數據) send方法已調用,但是當前的狀態及http頭未知

    3 (數據傳送中) 已接收部分數據,因為響應及http頭不全,這時透過responseBody和responseText部分資料會出現錯誤,

    4 (完成) 資料接收完畢,此時可以透過responseXml和responseText取得完整的回應資料

  但是,由於各瀏覽器之間存在差異,所以建立一個XMLHttpRequest物件可能需要不同的方法。這個差異主要體現在IE和其它瀏覽器之間。下面是一個比較標準的建立XMLHttpRequest物件的方法。

function CreateXmlHttp() {    //非IE浏览器创建XmlHttpRequest对象    if (window.XmlHttpRequest) {
        xmlhttp = new XmlHttpRequest();
    }    //IE浏览器创建XmlHttpRequest对象    if (window.ActiveXObject) {        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }        catch (e) {            try {
                xmlhttp = new ActiveXObject("msxml2.XMLHTTP");
            }            catch (ex) { }
        }
    }
}function Ustbwuyi() {    var data = document.getElementById("username").value;
    CreateXmlHttp();    if (!xmlhttp) {
        alert("创建xmlhttp对象异常!");        return false;
    }

    xmlhttp.open("POST", url, false);

    xmlhttp.onreadystatechange = function () {        if (xmlhttp.readyState == 4) {
            document.getElementById("user1").innerHTML = "数据正在加载...";            if (xmlhttp.status == 200) {
                document.write(xmlhttp.responseText);
            }
        }
    }
    xmlhttp.send();
}

  如上所示,函數首先檢查XMLHttpRequest的整體狀態並且保證它已經完成(readyStatus=4),即資料已經傳送完畢。然後根據伺服器的設定詢問請求狀態,如果一切已經就緒(status=200),那麼就執行下面需要的操作。

對於XmlHttpRequest的兩個方法,open和send,其中open方法指定了:

a、向伺服器提交資料的類型,即post還是get。

b、請求的url位址和傳遞的參數。

      c、傳送方式,false為同步,true為非同步。預設為true。如果是非同步通訊方式(true),客戶機就不等待伺服器的回應;如果是同步方式(false),客戶機就要等到伺服器回傳訊息後才去執行其他操作。我們需要根據實際需求來指定同步方式,在某些頁面中,可能會發出多個請求,甚至是有組織有計劃有隊形大規模的高強度的request,而後一個是會覆蓋前一個的,這個時候當然要指定同步方式。

    Send方法用來傳送請求。

  知道了XMLHttpRequest的工作流程,我們可以看出,XMLHttpRequest是完全用來向伺服器發出一個請求的,它的作用也局限於此,但它的作用是整個ajax實現的關鍵,因為ajax無非是兩個過程,發出請求和回應請求。並且它完全是一種客戶端的技術。而XMLHttpRequest正是處理了伺服器端和客戶端通訊的問題所以才會如此的重要。

  現在,我們對ajax的原理大概可以有一個了解了。我們可以把伺服器端看成一個資料接口,它回傳的是一個純文字流,當然,這個文字流可以是XML格式,可以是Html,可以是Javascript程式碼,也可以只是一個字串。這時候,XMLHttpRequest向伺服器端請求這個頁面,伺服器端將文字的結果寫入頁面,這和普通的web開發流程是一樣的,不同的是,客戶端在非同步取得這個結果後,不是直接顯示在頁面,而是先由javascript來處理,然後再顯示在頁面。至於現在流行的許多ajax控件,例如magicajax等,可以返回DataSet等其它資料類型,只是將這個過程封裝了的結果,本質上他們並沒有什麼太大的區別。

7、ajax的優點

   Ajax的帶給我們的好處大家基本上都深有體會,在這裡我只簡單的講幾點:

    1.最大的一點是頁面無刷新,在頁面內與伺服器通信,給使用者的體驗非常好。

  2、使用非同步方式與伺服器通信,不需要打斷使用者的操作,具有更迅速的回應能力。

  3、可以把以前一些伺服器負擔的工作轉嫁到客戶端,利用客戶端閒置的能力來處理,減輕伺服器和頻寬的負擔,節省空間和寬頻租用成本。並且減輕伺服器的負擔,ajax的原則是“按需取資料”,可以最大程度的減少冗餘請求,和回應對伺服器造成的負擔。

    4、基於標準化的並且被廣泛支援的技術,不需要下載外掛程式或小程式。

8、ajax的缺點

  下面我著重講一講ajax的缺陷,因為平時我們大多注意的都是ajax給我們所帶來的好處諸如使用者體驗的提升。而對ajax所帶來的缺陷則有所忽視。

  以下所闡述的ajax的缺陷都是它先天所產生的。

    1、ajax幹掉了back按鈕,也就是對瀏覽器後退機制的破壞。後退按鈕是一個標準的web站點的重要功能,但是它沒辦法和js進行很好的合作。這是ajax所帶來的一個比較嚴重的問題,因為使用者往往是希望能夠透過後退來取消前一次的操作。那麼對於這個問題有沒有辦法呢?答案是肯定的,用過Gmail的知道,Gmail下面採用的ajax技術解決了這個問題,在Gmail下面是可以後退的,但是,它也並不能改變ajax的機制,它只是採用的一個比較笨但是有效的辦法,即使用者點擊後退按鈕存取歷史記錄時,透過建立或使用一個隱藏的IFRAME來重現頁面上的變更。 (例如,當用戶在Google Maps中單擊後退時,它在一個隱藏的IFRAME中進行搜索,然後將搜索結果反映到Ajax元素上,以便將應用程式狀態恢復到當時的狀態。)

但是,雖然說這個問題是可以解決的,但是它所帶來的開發成本是非常高的,和ajax框架所要求的快速開發是相背離的。這是ajax所帶來的一個非常嚴重的問題。 (想看更多就到PHP中文網AJAX開發手冊專欄中學習)

     2、安全問題

技術同時也為IT企業帶來了新的安全威脅,ajax技術就如同對企業資料建立了一個直接通道。這使得開發者在不經意間會暴露比以前更多的資料和伺服器邏輯。 ajax的邏輯可以對客戶端的安全掃描技術隱藏起來,讓駭客可以從遠端伺服器建立新的攻擊。還有ajax也難以避免一些已知的安全弱點,諸如跨站點腳步攻擊、SQL注入攻擊和基於credentials的安全漏洞等。

     3.搜尋引擎的支援較弱。

     4.破壞了程式的異常機制。至少從目前看來,像是ajax.dll,ajaxpro.dll這些ajax框架是會破壞程式的異常機制的。關於這個問題,我曾經在開發過程中遇到過,但是查了一下網路上幾乎沒有相關的介紹。後來我自己做了一次試驗,分別採用ajax和傳統的form提交的模式來刪除一條數據……給我們的調試帶來了很大的困難。

     5、另外,像其他方面的一些問題,比如說違背了url和資源定位的初衷。例如,我給你一個url地址,如果採用了ajax技術,也許你在該url地址下面看到的和我在這個url地址下看到的內容是不同的。這個和資源定位的初衷是相背離的。

     6、一些手持裝置(如手機、PDA等)現在還不能很好的支援ajax,比如說我們在手機的瀏覽器上打開採用ajax技術的網站時,它目前是不支援的,當然,這個問題跟我們沒太多關係。

9、ajax的幾種框架

  目前我們採用的比較多的ajax框架主要有ajax.dll,ajaxpro.dll,magicajax.dll 以及微軟的atlas框架。 Ajax.dll和Ajaxpro.dll這兩個框架差別不大,而magicajax.dll只是封裝得更厲害一些,比如說它可以直接回傳DataSet資料集,前面我們已經說過,ajax回傳的都是字串, magicajax只是對它進行了封裝而已。但它的這個特點可以為我們帶來很大的方便,比如說我們的頁面有一個列表,而列表的數據是不斷變化的,那麼我們可以採用magicajax來處理,操作很簡單,添加magicajax之後,將要更新的清單控制項放在magicajax的控制項之內,然後在pageload裡面定義更新間隔的時間就ok了,atlas的原理和magicajax差不多。但是,需要注意的一個問題是,這幾種框架都只支援IE,沒有進行瀏覽器相容方面的處理,用反編譯工具察看他們的程式碼就可以知道。

 除了這幾種框架之外,我們平常用到的比較多的方式是自己創建xmlHttpRequest對象,這種方式和前面的幾種框架相比更具靈活性。另外,這裡還提一下aspnet2.0自帶的異步回調接口,它和ajax一樣也可以實現局部的無刷新,但它的實現實際上也是基於xmlhttprequest對象的,另外也是只支持IE,當然這是微軟的一個競爭策略。

10、ajax範例

#驗證使用者名稱是否註冊。

採用兩種方式

  1 ajax.dll

  2 自己寫xmlhttprequest物件 

#10.ajax中常見到的一些錯誤

   1 設定的問題

  在pageload裡面配置該頁面的時候 

在後台呼叫的方法裡呼叫了前台的部分…

這篇文章到這就到這裡就呼叫的方法裡呼叫了前台的部分…這篇文章到這就到這就結束了(想看更多就到PHP中文網

AJAX使用手冊###欄位中學習),有問題的可以在下方留言提問。 ###

以上是ajax的工作原理你知道嗎? ajax的簡介和原理的詳細總結(經典)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Scrapy基于Ajax异步加载实现方法Scrapy基于Ajax异步加载实现方法Jun 22, 2023 pm 11:09 PM

Scrapy是一个开源的Python爬虫框架,它可以快速高效地从网站上获取数据。然而,很多网站采用了Ajax异步加载技术,使得Scrapy无法直接获取数据。本文将介绍基于Ajax异步加载的Scrapy实现方法。一、Ajax异步加载原理Ajax异步加载:在传统的页面加载方式中,浏览器发送请求到服务器后,必须等待服务器返回响应并将页面全部加载完毕才能进行下一步操

如何使用CakePHP中的AJAX?如何使用CakePHP中的AJAX?Jun 04, 2023 pm 08:01 PM

作为一种基于MVC模式的PHP框架,CakePHP已成为许多Web开发人员的首选。它的结构简单,易于扩展,而其中的AJAX技术更是让开发变得更加高效。在本文中,将介绍如何使用CakePHP中的AJAX。什么是AJAX?在介绍如何在CakePHP中使用AJAX之前,我们先来了解一下什么是AJAX。AJAX是“异步JavaScript和XML”的缩写,是指一种在

jquery ajax报错403怎么办jquery ajax报错403怎么办Nov 30, 2022 am 10:09 AM

jquery ajax报错403是因为前端和服务器的域名不同而触发了防盗链机制,其解决办法:1、打开相应的代码文件;2、通过“public CorsFilter corsFilter() {...}”方法设置允许的域即可。

ajax传递中文乱码怎么办ajax传递中文乱码怎么办Nov 15, 2023 am 10:42 AM

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。详细介绍:1、设置统一的编码方式,确保服务器端和客户端使用相同的编码方式,通常情况下,UTF-8是一种常用的编码方式,因为它可以支持多种语言和字符集;2、服务器端编码,在服务器端,确保将中文数据以正确的编码方式进行编码,再传递给客户端等等。

Nginx中404页面怎么配置及AJAX请求返回404页面Nginx中404页面怎么配置及AJAX请求返回404页面May 26, 2023 pm 09:47 PM

404页面基础配置404错误是www网站访问容易出现的错误。最常见的出错提示:404notfound。404错误页的设置对网站seo有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛。404页面的目的应该是告诉用户:你所请求的页面是不存在的,同时引导用户浏览网站其他页面而不是关掉窗口离去。搜索引擎通过http状态码来识别网页的状态。当搜索引擎获得了一个错误链接时,网站应该返回404状态码,告诉搜索引擎放弃对该链接的索引。而如果返回200或302状态码,搜索引擎就会为该链接建立索引

什么是ajax重构什么是ajax重构Jul 01, 2022 pm 05:12 PM

ajax重构指的是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更合理,提高软件的扩展性和维护性;Ajax的实现主要依赖于XMLHttpRequest对象,由于该对象的实例在处理事件完成后就会被销毁,所以在需要调用它的时候就要重新构建。

在Laravel中如何通过Ajax请求传递CSRF令牌?在Laravel中如何通过Ajax请求传递CSRF令牌?Sep 10, 2023 pm 03:09 PM

CSRF代表跨站请求伪造。CSRF是未经授权的用户冒充授权执行的恶意活动。Laravel通过为每个活动用户会话生成csrf令牌来保护此类恶意活动。令牌存储在用户的会话中。如果会话发生变化,它总是会重新生成,因此每个会话都会验证令牌,以确保授权用户正在执行任何任务。以下是访问csrf_token的示例。生成csrf令牌您可以通过两种方式获取令牌。通过使用$request→session()→token()直接使用csrf_token()方法示例<?phpnamespaceApp\Http\C

使用HTML5文件上传与AJAX和jQuery使用HTML5文件上传与AJAX和jQuerySep 13, 2023 am 10:09 AM

当提交表单时,捕获提交过程并尝试运行以下代码片段来上传文件-//File1varmyFile=document.getElementById(&#39;fileBox&#39;).files[0];varreader=newFileReader();reader.readAsText(file,&#39;UTF-8&#39;);reader.onload=myFunc;functionmyFunc(event){&nbsp;&nbsp;varres

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

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

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境