用AJAX傳送JSONP請求解決跨域資源訪問

2021-09-19 12:23:45 字數 1408 閱讀 9628

為解決跨域,引入jsonp(json with padding)。

jquery的靜態方法$.ajax(url, ?settings)的settings引數物件的成員有很多,

和跨域所用的jsonp相關的成員有:crossdomain, datatype, jsonpcallback, jsonp

多個空格分隔的值:從jquery 1.5開始,jquery可以將資料型別從它在content-type頭部接收到的資料型別轉換為您需要的資料型別。例如,如果您希望文字響應被視為xml,那麼對資料型別使用「text xml」。您還可以發出jsonp請求,將其接收為文字,並用jquery將其解釋為xml:「jsonp text xml」。類似地,類似於「jsonp xml」這樣的簡寫字串將首先嘗試從jsonp轉換為xml,如果失敗,則先從jsonp轉換為文字,然後再從文字轉換為xml。

前端jsonp請求:

$.ajax(,

error: function(jq)

});

後端:

@responsebody

public string getusers(@requestparam("callback") string callback)

note:

- 前後端約定好jsonp的值(預設為callback)。

- 後端根據jsonp引數名獲取到引數後要與本來要返回的json資料按「callback(json)」的方式構造。

請求:http://localhost:8080/getusers?callback=jquery1124009844590394746122_1555941663831&_=1555941663832

- 請求頭`headers`

可以看到:自動生成了兩個查詢引數對。

乙個叫callback,另乙個叫_

而響應(請求返回的資料)是類似於乙個函式的格式。

jquery******(資料)

函式名稱為查詢引數callback的值(jquery隨機生成這個值)。

新增callback引數值(jquery隨機生成)的目的是唯一標識這次請求。

當伺服器端接收到該請求時,需要將該引數的值與實際要返回的json值進行構造(如何構造下面講解),並且返回,而前端會驗證這個引數,如果是它之前發出的引數,那麼就會接收並解析資料,如果不是這個引數,那麼就拒絕接受。

jsonp形式的ajax請求

sonp形式的ajax請求 並且通過get請求的方式傳入引數,注意 跨域請求是只能是get請求不能使用post請求 jsonp 傳遞給請求處理程式或頁面的,用以獲得jsonp 函式名的引數名 預設為 callback jsonpcallback 自定義的jsonp 函式名稱,預設為jquery自動生...

傳送Ajax請求

get請求傳送資料量較小,不能大於2kb,引數追加在url後面,看的到明碼的請求引數值。post請求傳送資料量大小不受限制,請求通過http post機制 將請求引數放在html header中傳輸,看不到明碼的請求引數值。步驟一 建立非同步物件 步驟二 設定請求的url引數,引數一是請求的型別,引...

ajax傳送請求

jquery中.ge t 提 交和 get 提交和 get 提交和.post 提交有區別嗎?相同點 都是非同步請求的方式來獲取服務端的資料 異同點 1 請求方式不同 ge t 方 法使用g et方法 來進行異 步請求的 get 方法使用get方法來進行非同步請求的。get 方法使用 get方 法來進...