Jsonp解決跨域3
1趾撵、jsonp請(qǐng)求修改callback參數(shù)名稱
你會(huì)發(fā)現(xiàn)返回?cái)?shù)據(jù)為json對(duì)象狮鸭,不再是一個(gè)js函數(shù)
原因:因?yàn)閖sonp是一個(gè)約定浆西,以前前端和后端的參數(shù)約定是callback曾掂,現(xiàn)在前端請(qǐng)求參數(shù)是callback2,所以后端就不認(rèn)識(shí)callback2承边,所以就不知道這是一個(gè)jsonp請(qǐng)求遭殉,所以返回的就不會(huì)是一個(gè)js代碼石挂,如果后端約定也改成callback2博助,它就會(huì)返回js代碼
2、jsonp前后端修改約定參數(shù)
前端改下約定參數(shù):callback2
后端改下約定參數(shù):callback2
jsonp請(qǐng)求參數(shù)為callback2痹愚,成功返回js代碼
3、jsonp請(qǐng)求實(shí)質(zhì)
發(fā)送jsonp請(qǐng)求拯腮,其實(shí)是創(chuàng)建動(dòng)態(tài)創(chuàng)建一個(gè)script腳本
打個(gè)debug斷點(diǎn)才能看到
執(zhí)行完head.insertBefore( script,head.firstChild );之后,表示動(dòng)態(tài)創(chuàng)建了一個(gè)script腳本
4萝喘、jsonp參數(shù)’_’作用
另一個(gè)參數(shù)‘_’是一串隨機(jī)的數(shù)字,這個(gè)是用來(lái)避免請(qǐng)求緩存的
啟動(dòng)cache表示可以使用緩存
你會(huì)發(fā)現(xiàn)jsonp請(qǐng)求少了‘_’參數(shù)