javascript - jsonp只能用get原因
阿神
阿神 2017-06-12 09:28:42
0
5
1214

為什麼jsonp只能使用get請求,是因為get的一些原因,還是post的某些原因,還是一些別的原因,我查文檔說是'這是由於該技術本身的特性所決定的' 請問這種本身的特性是指的什麼,能不能具體的說明一下。萬分感謝!

阿神
阿神

闭关修行中......

全部回覆 (5)
Ty80

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請求如下:

    jsonp({ url: 'http://path/to/server/b', params: {A: a, B: b}, success: function myCallback (response) {} })

    背後其實在進行:

    1. 拼接一個script標籤,,從而觸發對指定位址的GET請求

    2. 那伺服器端對這個GET請求進行處理,並回傳字串 "myCallback('response value')"

    3. 那前端script載入完之後,其實就是在script中執行myCallback('response value')

    4. 是不是就完成了跨域的請求,

    5. 是不是就是只能用GET

      黄舟

      類似於給你的頁裡面動態加了一段js 程式碼,你覺得js檔案可以post嗎?

        给我你的怀抱

        假設你要求的地址傳回這麼個網頁.

            Document  
        

        瀏覽器拿到這個網頁後要解析, 解析到

        這一行程式碼的時候, 就知道這裡需要一個js檔, 於是再發起一個請求, 去拿這個js檔. 這個請求只能用GET方法, 不可能是POST, 就好像你在瀏覽器地址欄輸入地址回車進入一樣.

        JSONP的實現原理就是創建一個script標籤, 再把需要請求的api地址放到src裡. 所以只能是GET的.

          代言

          因為

            最新下載
            更多>
            網站特效
            網站源碼
            網站素材
            前端模板
            關於我們 免責聲明 Sitemap
            PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!