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請求 如果兩個頁面擁有相同的協議 網域名稱和埠號,那麼這...