跨域請求方式之Jsonp形式

2022-09-17 03:48:14 字數 1366 閱讀 8154

在瀏覽器端才有跨域安全限制一說,而在伺服器端是沒有跨域安全限制的。

在兩個異構系統(開發語言不同)之間達到資源共享就需要發起乙個跨域請求。

而瀏覽器的同源策略卻

限制了從乙個源頭的文件資源或指令碼資源與來自另乙個源頭的資源進行互動。在請求協議、埠以及網域名稱(主機)相同時才是同乙個源,否則不是同乙個源,js無法訪問不是同源的資源。

通過js發起跨域請求需要進行改造,或先將請求發到同源的伺服器中,然後伺服器內部進行**請求,再將資料**到前端進行展示。

通過jsonp發起跨域請求>>

jsonp是json的的一種使用模式,jsonp基於

js,如果沒有

js的環境就沒有

jsonp

。jsonp能簡單的

解決跨域問題,主要是利用了js的乙個「漏洞」,使用

在另一端伺服器接收"test"引數並處理請求,返回乙個jsonp格式即可形成乙個跨域請求。

返回資料格式:test()

以上這種寫法是基本寫法,需要自己寫指令碼發起請求,還要寫個函式來處理資料,比較麻煩。

第二種用法:

通過jquery發起ajax請求的方式。

<

script

>

$(document).ready(

function

() });

});});

script

>

後台不改變還是以上的那種,需要拼接個jsonp格式的資料即可。

設為datatype: 'jsonp', 這個$.ajax方法就和ajax xmlhttprequest沒什麼關係了,取而代之的則是jsonp協議.

jsonp是乙個非官方的協議,它允許在伺服器端整合script tags返回至客戶端,通過j**ascript callback的形式實現跨域訪問jsonp即json with padding。由於同源策略的限制,xmlhttprequest只允許請求當前源(網域名稱、協議、埠)的資源。如果要進行跨域請求,我們可以通過使用html的script標記來進行跨域請求,並在響應中返回要執行的script**,其中可以直接使用json傳遞j**ascript物件。這種跨域的通訊方式稱為jsonp。

第三中用法:

通過$.getjsonp() 方法。該方法是jquery對ajax的一種高階封裝。有些$.ajax api底層的引數就被封裝而不可見了。

<

script

>

//第一引數鏈結,第二個引數函式名稱自定義

$.getjsonp(url,test);

script

>

JSONP跨域請求

看到jsonp我們會很自然的想到json,但它們卻有很大的不同,json是一種輕量級的資料交換格式,而jsonp可以說是一種非官方的資料互動協議。jsonp json with padding 利用jsonp可以從別的網域名稱下獲取資料,即跨域獲取資料。由於同源策略不允許xmlhttprequest...

JSONP跨域請求

前端常用ajax請求來實現不重新整理頁面方式向伺服器請求資料,但它受瀏覽器同源策略的影響而無法實現跨域請求。然而script標籤src屬性的引用卻是不受跨越限制的,基於此可以傳送跨域請求,服務端不再是返回json格式的資料,而是返回一段呼叫某個函式的js 在src中進行了呼叫。您所在的城市天氣情況 ...

jsonp跨域請求

ajax是不能跨域的,但是利用jsonp是可以實現跨域的,博主今天記錄一篇jsonp跨域的例項。通俗的說,就是利用的特殊性去請求伺服器,伺服器返回josnp格式資料,jsonp資料格式 function json 換句話說,就是把json資料報裝在乙個函式引數中返回,然後呼叫本地js中的functi...