84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
為什麼jsonp只能使用get請求,是因為get的一些原因,還是post的某些原因,還是一些別的原因,我查文檔說是'這是由於該技術本身的特性所決定的' 請問這種本身的特性是指的什麼,能不能具體的說明一下。萬分感謝!
闭关修行中......
JSONP 是一種【請求一段 JS 腳本,把執行這段腳本的結果當作資料】的玩法。
所以,你能 POST 一段透過 script 標籤引入的腳本嗎?
(如果看過 JSONP 函式庫的原始碼就知道,常見的實作程式碼其實就是document.createElement('script')產生一個 script 標籤,然後插 body 裡而已。這裡根本沒有設定請求格式的餘地)。
document.createElement('script')
域名A中的JS代碼AJAX請求域名為B的伺服器數據,這就是跨域AJAX請求,預設情況下是不行的。
但是HTML中有地方可以跨域請求,例如img script標籤,它們的src屬性指向的位址可以是不在網域名稱下的(即跨域)。
那有人就利用了上面的特點,選擇了script中src能夠跨域獲得內容的特性,研究出了JSONP這種hack協議。 (src中請求都是GET)
那假設JSONP請求如下:
jsonp({ url: 'http://path/to/server/b', params: {A: a, B: b}, success: function myCallback (response) {} })
背後其實在進行:
拼接一個script標籤,,從而觸發對指定位址的GET請求
那伺服器端對這個GET請求進行處理,並回傳字串 "myCallback('response value')"
那前端script載入完之後,其實就是在script中執行myCallback('response value')
myCallback('response value')
是不是就完成了跨域的請求,
是不是就是只能用GET
類似於給你的頁裡面動態加了一段js 程式碼,你覺得js檔案可以post嗎?
假設你要求的地址傳回這麼個網頁.
Document
瀏覽器拿到這個網頁後要解析, 解析到
這一行程式碼的時候, 就知道這裡需要一個js檔, 於是再發起一個請求, 去拿這個js檔. 這個請求只能用GET方法, 不可能是POST, 就好像你在瀏覽器地址欄輸入地址回車進入一樣.
JSONP的實現原理就是創建一個script標籤, 再把需要請求的api地址放到src裡. 所以只能是GET的.
因為
JSONP 是一種
【請求一段 JS 腳本,把執行這段腳本的結果當作資料】
的玩法。
所以,你能 POST 一段透過 script 標籤引入的腳本嗎?
(如果看過 JSONP 函式庫的原始碼就知道,常見的實作程式碼其實就是
document.createElement('script')
產生一個 script 標籤,然後插 body 裡而已。這裡根本沒有設定請求格式的餘地)。域名A中的JS代碼AJAX請求域名為B的伺服器數據,這就是跨域AJAX請求,預設情況下是不行的。
但是HTML中有地方可以跨域請求,例如img script標籤,它們的src屬性指向的位址可以是不在網域名稱下的(即跨域)。
那有人就利用了上面的特點,選擇了script中src能夠跨域獲得內容的特性,研究出了JSONP這種hack協議。 (src中請求都是GET)
那假設JSONP請求如下:
背後其實在進行:
拼接一個script標籤,
,從而觸發對指定位址的GET請求
那伺服器端對這個GET請求進行處理,並回傳字串 "myCallback('response value')"
那前端script載入完之後,其實就是在script中執行
myCallback('response value')
是不是就完成了跨域的請求,
是不是就是只能用GET
類似於給你的頁裡面動態加了一段js 程式碼,你覺得js檔案可以post嗎?
假設你要求的地址傳回這麼個網頁.
瀏覽器拿到這個網頁後要解析, 解析到
這一行程式碼的時候, 就知道這裡需要一個js檔, 於是再發起一個請求, 去拿這個js檔. 這個請求只能用GET方法, 不可能是POST, 就好像你在瀏覽器地址欄輸入地址回車進入一樣.
JSONP的實現原理就是創建一個script標籤, 再把需要請求的api地址放到src裡. 所以只能是GET的.
因為