使用JSONP解決同源限制問題

2021-10-21 06:59:22 字數 1182 閱讀 7462

ajax只能向自己的伺服器傳送請求

同源:如果兩個頁面擁有相同的協議,埠和網域名稱,那麼這兩個頁面就屬於同乙個源,其中只要乙個不相同,就是不同源

同源政策的目的:為了保證使用者資訊的安全,防止惡意的**竊取資料,最初的同源政策是指a**在客戶端設定的cookie,b**是不能訪問的

使用jsonp解決同源限制問題(它不屬於ajax請求,但他可以模擬ajax請求)

將不同源的伺服器端請求位址寫在script標籤的src屬性中

伺服器端相應資料必須是乙個函式的呼叫,真正要傳送給客戶端的資料需要作為函式呼叫的引數

在客戶端全域性作用域下定義函式fn

在fn函式內部對伺服器端返回的資料進行處理

客戶端需要將函式名稱傳遞到伺服器

將script請求的傳送變成動態請求

="btn"

>點我傳送請求<

/button>

<

!-- 將非同源伺服器端的請求位址寫在script標籤中 --

>

var btn = document.

queryselector

('.btn');

btn.

onclick

=function()

,success

:function

(data)}

)}function

jsonp

(options

)var fnname =

'myjsonp'

+ math.

random()

.tostring()

.replace

('.',''

);// 變成全域性函式

window[fnname]

=options.success;

// 設定scr屬性

script.src = options.url +

'?callback='

+ fnname + params;

// 將script標籤追加到頁面中

document.body.

(script)

;// 為script新增onload事件

script.

onload

=function()

}<

/script>

使用JSONP解決同源限制問題

ajax請求限制 ajax只能向自己的伺服器傳送請求,比如現在有乙個a 有乙個b a 中的html檔案只能向b 中傳送ajax請求,但是a 是不能向b 傳送ajax請求,同理,b 也不能向a 傳送ajax請求。同源 如果兩個頁面擁有相同的協議,網域名稱和埠,那麼這兩個頁面就屬於同乙個源,其中只要有乙...

jsonp 解決同源機制

可以跨域的ajax 原理 因為script標籤傳送的請求接收的內容會到script標籤內部如 返回值為func 執行結果為 返回值為func 執行結果為 都會報錯。因為func 會被讀取為變數。怎麼樣解決呢?我們可以定義乙個函式的函式名為func 並且 和後端溝通他的返回值為func 這樣就可以執行...

Ajax 使用jsonp向非同源伺服器請求資料

ajax只能向自己的伺服器傳送請求。比如現在有乙個a 有乙個b a 中的html檔案只能向a 伺服器中傳送ajax請求,b 中的html檔案只能向b 中傳送ajax請求,但是a 是不能向b 傳送ajax請求的,同理,b 也不能向a 傳送ajax請求 如果兩個頁面擁有相同的協議 網域名稱和埠號,那麼這...