ajax通過服務端代理
1. 實現跨域名ajax數據獲取,有哪些方法
Ajax 本身跨域是被瀏覽器給禁止的
那麼要實現不刷新頁面的情況下,改變頁面內容或取得服務端數據,至少有下面 4 個方法
1.自己搭個服務端代理
這個兼容性最好,特別是目標點不是自己可以操作的情況下,能夠自己轉化為標準的 js 數據
2.用 Flash 去跨域
這個網上例子就多了,但似乎也需要在目標點配置跨域的文件
3.用 <iframe> 節點載入
src 里填寫目標地址,目標地址反饋的是一個完整的 HTML 頁面,同時包含 Ajax 的數據
但由於 iframe 跨域操作也有限制,那麼主要適合同根域的情況
4.用 <script> 節點載入
如果目標點的數據可以自己來控制,那麼這個方法最合適,在需要載入數據的時候,
你可以在頁面 new 出一個 script 的節點,可以選擇非同步操作還是同步操作,可以
在 src 里填寫放回數據所要調用的方法名,使得在數據得到時,自動觸發某個方法
如果出現莫名的問題
a. 請將請求通過 post 來發送試試 因為瀏覽器對 post 請求的跨域限制比較少,比如 Safari
b. 你的域名可能太短 這個是我見過的最詭異的問題,未必每個環境都會出現,但你也許能遇上..
時代互聯為你解答!
2. Ajax如何使用代理 跨域 POST 請求
如果你要訪問的那個域是你可操控的,你可以使用js腳本注入的方式跨域。
3. ajax處理跨域有幾種方式實現原理是什麼
Ajax
本身跨域是被瀏覽器給禁止的
那麼要實現不刷新頁面的情況下,改變頁面內容或取得服務端數據,至少有下面
4
個方法
1.自己搭個服務端代理
這個兼容性最好,特別是目標點不是自己可以操作的情況下,能夠自己轉化為標準的
js
數據
2.用
Flash
4. ajax怎麼與服務端異
AJAX,即Asynchronous Javascript And XML,AJAX本質是在HTTP協議的基礎上以非同步的方式與伺服器進行通信。
所謂的非同步,是指某段程序執行不會阻塞其他程序執行,其表現形式為程序的執行順序不依賴程序本身的書寫順序。
從而提升整體執行效率。
1:客戶端請求
js內置http請求對象 XMLHttpRequest;
a、請求行
xhr.open() 發起請求,可以是get、post方式
get和post請求方式的差異
1、GET沒有請求主體,使用xhr.send(null)
2、GET可以通過在請求URL上添加請求參數
3、POST可以通過xhr.send('name=itcast&age=10')
4、POST需要設置
5、GET效率更好(應用多)
6、GET大小限制約4K,POST則沒有限制
b、請求頭
xhr.setRequestHeader() 設置請求頭
c、請求內容
xhr.send() 發送請求主體 get方式使用xhr.send(null)
2:服務端相應
HTTP響應是由服務端發出的,由於伺服器做出響應需要時間(比如網速慢等原因),所以我們需要監聽伺服器響應的狀態,然後才能進行處理。
a、獲取狀態行(包括狀態碼&狀態信息)
xhr.status 狀態碼,如200、304、404等; xhr.statusText 狀態碼信息如OK;
b、獲取響應頭
xhr.getResponseHeader('Content-Type')獲取指定頭信息;xhr.getAllResponseHeaders();獲取全部響應頭信息;
c、響應主體
xhr.responseText xhr.responseXML 都表示響應主體,我們需要檢測並判斷響應頭的MIME類型後確定使用request.responseText或者request.responseXML。
onreadystatechange是Javascript的事件的一種,其意義在於監聽XMLHttpRequest的狀態,各種狀態如下:
**readyState**
0:請求未初始化(還沒有調用 open())。
1:請求已經建立,但是還沒有發送(還沒有調用 send())。
2:請求已發送,正在處理中(通常現在可以從響應中獲取內容頭)。
3:請求在處理中;通常響應中已有部分數據可用了,但是伺服器還沒有完成響應的生成。
4:響應已完成;您可以獲取並使用伺服器的響應了。
5. 我想通過ajax發送數據給伺服器…………
需要對數據編碼,上面的例子中:name=encodeURIComponent("java&jsp");
希望採納
6. 有一個第三方介面,我要用ajax請求,出現跨域。不能修改第三方伺服器,並且只能用post提交有什麼方案
你好,你可以用ajax請求本地的介面,本地介面使用curl方式調用第三方伺服器就沒有問題了。
7. 如何通過添加js腳本進行http代理
在Ajax應用程序中,XmlHttpRequest對象負責將用戶信息以非同步通信地發送到伺服器端,並接收伺服器返回的響應信息和數據。
XMLHttpRequest簡介
XMLHttpRequest可以提供不重新載入頁面的情況下更新網頁,在頁面載入後在客戶端向伺服器請求數據,在頁面載入後在伺服器端接受數據,在後台向客戶端發送數據。XMLHttpRequest 對象提供了對 HTTP 協議的完全的訪問,包括做出 POST 和 HEAD 請求以及普通的 GET 請求的能力。XMLHttpRequest 可以同步或非同步返回 Web 伺服器的響應,並且能以文本或者一個 DOM 文檔形式返回內容。盡管名為 XMLHttpRequest,它並不限於和 XML 文檔一起使用:它可以接收任何形式的文本文檔。XMLHttpRequest 對象是名為 AJAX 的 Web 應用程序架構的一項關鍵功能。
XMLHttpRequest和Javascript
Javascript本身並未具備向伺服器發送請求的能力,要麼使用window.open()方法重新打開一個頁面向伺服器提交請求,要麼使用XMLHttpRequest對象發送請求。不同的是,前者是普通的即同步交互模式,而後者是非同步交互方式。
8. 初學ajax,如何在伺服器端完成處理
你那裡需要和資料庫連接就寫在哪裡
比如說你頁面載入的時候需要連接就在page_load()裡面寫,如果想用按鈕點擊的話就在click()裡面寫
確保被調用的話就是說你要設置一個可觸發的條件,不如說文本框檢測,可以用onchange()的函數之類的意思
-----------------------------------------------
首先,我只能說你可以去看一下jquery,他幫你封裝了很多javascript的函數,包括ajax函數,比如說ajax,只需要$.ajax()就能實現。
你所說我給你一張表,這個是所有input函數的集合
http://www.w3schools.com/TAGS/tag_input.asp
其中像你說的,可以用方法 onchange來實行自動檢測是否有修改,有就會調用ajax函數
另外textbox的原名叫textarea,是區塊文本輸出
http://www.w3schools.com/TAGS/tag_textarea.asp
也可以用onchange來作為一個觸發條件
其實 onblur 也是一個很好的條件,是失去焦點的時候觸發
9. 如何偽造ajax服務返回信息
偽造ajax返回信息的方法有三種:
1、通過一個代理偽造response,例如使用調試工具Fiddler;
2、通過篡改DNS的方式(例如修改hosts)讓腳本向你的伺服器發送請求;
3、使用Web Inspector、Firebug等調試工具或上述方式修改代碼。
以Fiddler篡改為例來說明:
1、打開並編輯Customize Rule文件,在方法 OnBeforeResponse 中插入修改代碼,重啟Fiddler重新載入Rule,運行。
插入代碼如下:
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
// 判斷是否為目標請求
var isMusicRequest = false;
if ((oSession.host == "m..com") && // host
oSession.fullUrl.Contains("suggest?ctl=his&action=list")) // url
{
isMusicRequest = true;
}
// 修改返回JSON串
if (isMusicRequest)
{
// 1, 獲取Response Body中JSON字元串
var responseStringOriginal = oSession.GetResponseBodyAsString();
//FiddlerObject.log(responseStringOriginal); // 可在控制台中輸出Log
// 2, 轉換為可編輯的JSONObject變數
var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);
// 3, 修改JSONObject變數
// 3.1修改欄位
responseJSON.JSONObject[『singer『] = "艾密莉亞·懷得堡";
// 3.2添加欄位
var similarSong1= 『{『 +
『"music": "dying in the sun",『+
『"singer": "The Cranberries"『+
『}『;
var similarSong2= 『{『 +
『"music": "seasons in sun",『+
『"singer": "WestLife"『+
『}『;
var similarSong = 『[『 +
similarSong1 +
『,『 +
similarSong2 +
『]『;
responseJSON.JSONObject[『similar song『] = Fiddler.WebFormats.JSON.JsonDecode(similarSong).JSONObject ;
// 4, 重新設置Response Body
var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);
//FiddlerObject.log(responseStringDestinal);
oSession.utilSetResponseBody(responseStringDestinal);
}
}