JSONP只支持GET請(qǐng)求,不支持POST請(qǐng)求。這意味著在使用JSONP時(shí),只能通過(guò)GET請(qǐng)求獲取數(shù)據(jù),而無(wú)法通過(guò)POST請(qǐng)求提交數(shù)據(jù)。
JSONP只能處理JSON數(shù)據(jù)格式。JSONP是通過(guò)動(dòng)態(tài)創(chuàng)建一個(gè)script標(biāo)簽來(lái)實(shí)現(xiàn)跨域請(qǐng)求的,所以返回的數(shù)據(jù)必須是JSON格式,否則會(huì)導(dǎo)致解析錯(cuò)誤。
安全性問(wèn)題。JSONP存在安全漏洞,因?yàn)樗峭ㄟ^(guò)在頁(yè)面中動(dòng)態(tài)加載外部腳本來(lái)實(shí)現(xiàn)跨域請(qǐng)求的,攻擊者可以通過(guò)在響應(yīng)中插入惡意腳本來(lái)進(jìn)行跨站腳本攻擊。
JSONP不支持AJAX。由于JSONP是通過(guò)動(dòng)態(tài)創(chuàng)建script標(biāo)簽來(lái)實(shí)現(xiàn)跨域請(qǐng)求的,所以無(wú)法像AJAX那樣實(shí)現(xiàn)異步請(qǐng)求,只能通過(guò)回調(diào)函數(shù)的方式來(lái)處理返回的數(shù)據(jù)。
JSONP對(duì)服務(wù)器的要求比較高。服務(wù)器需要支持JSONP格式的返回?cái)?shù)據(jù),而且需要在返回?cái)?shù)據(jù)時(shí)指定回調(diào)函數(shù)的名稱,這對(duì)服務(wù)器端的開(kāi)發(fā)帶來(lái)了一定的限制。