鍍金池/ 問答/HTML/ jsonp為何只能是get方法?

jsonp為何只能是get方法?

看了幾篇文章,也沒有搞懂,請解釋一下?
最好的解釋在這里
https://segmentfault.com/q/10...

問題演變成
<script>標簽,只支持GET ?
我繼續(xù)問,

為何
<script>標簽,只支持GET ?

回答
編輯回答
傻叼

jsonp 的出現(xiàn)

簡介

因為瀏覽器同源策略的限制,XHR 1.0(XMLHttpRequests) 并不能對非當前域的網(wǎng)頁發(fā)起ajax請求,原則上是為了安全考慮。

jsonp 其實就是利用了瀏覽器對部分標簽沒有進行同源策略限制的原理,通常是在本地先創(chuàng)建function 放在window下,然后 通過創(chuàng)建標簽的形式來載入js 并自動執(zhí)行。然而這個叫載入的過程 其實只是有瀏覽器發(fā)起了一個js腳本的加載。然后并執(zhí)行。
從另一個角度來源 加載不可信來源的JS 也會有風險

代替方案

實現(xiàn)跨域請求的解決方案有很多,比如早期的iframe等... 想要了解更多的 可以 B站搜索 燕十八 其中一期 遠古時代的ajax

新時代的跨域

XHR 2.0

XHR 2.0 中,引入了一個新的方式來處理跨域,就是對方允許你進行跨域請求,在瀏覽器發(fā)起跨域請求時 會先發(fā)起一個 options 請求,來檢查發(fā)起請求的一方是否符合準入條件,如果滿足,就允許請求發(fā)起真正的請求,如果不允許 請求成功后 數(shù)據(jù)也會被切斷。

反向代理

其實跨域從產(chǎn)生之初就有一個解決方案,那就是在本地建立一個反向代理服務(wù)器,對目標進行請求,這樣就不存在跨域了。

2017年3月3日 04:06
編輯回答
默念

因為script就是頁面獲取腳本并執(zhí)行啊,你見過瀏覽器加載文件用別的方法的嗎,post是用來向服務(wù)器發(fā)送數(shù)據(jù)的。

還有,現(xiàn)在已經(jīng)沒有使用jsonp的必要了,其他方法不能跨域的jsonp一樣不能跨,其他方法要修改服務(wù)器端的jsonp一樣要修改,用點更現(xiàn)代的方法吧。

2017年9月27日 19:26
編輯回答
舊螢火

說反了,不是JSONP只能用GET,而是JSONP利用的是script標簽未對src內(nèi)容做跨域檢查的這個“bug”;而使用src去加載,就必然是GET請求。

2017年7月11日 23:46