jsonp 是一種【請求一段 js 指令碼,把執行這段指令碼的結果當做資料】的玩法。
所以,你能 post 一段通過 script 標籤引入的指令碼嗎?
(如果看過 jsonp 庫的原始碼就知道,常見的實現**其實就是 document.createelement(『script』) 生成乙個 script 標籤,然後插body裡而已。在這裡根本沒有設定請求格式的餘地)。
所以jsonp的實現原理就是建立乙個script標籤, 再把需要請求的api位址放到src裡. 這個請求只能用get方法, 不可能是post
網域名稱a中的js**ajax請求網域名稱為b的伺服器資料,這就是跨域ajax請求,預設情況下是不行的。
但是html中有地方可以跨域請求,比如img script標籤,它們的src屬性指向的位址可以是不在網域名稱a下的(即跨域)。
那有人就利用了上面的特點,選擇了script中src能夠跨域獲得內容的特性,研究出了jsonp這種hack協議。(src中請求都是get)
那假設jsonp請求如下:
jsonp(,
success: function mycallback (response) {}
})
1.拼接乙個script標籤,,從而觸發對指定位址的get請求
2.那伺服器端對這個get請求進行處理,並返回字串 「mycallback(『response value』)」
3.那前端script載入完之後,其實就是在script中執行mycallback(『response value』)
4.是不是就完成了跨域的請求,
5.是不是就是只能用get
所以jsonp不會對伺服器端**或者內容做更改,因為它只能傳送get請求
為什麼 Redis 6 只支援 RESP3 ?
redis 5 發布幾周後,我開始著手實現 resp3,經過幾天的工作,可以實現這一目標了。resp3 是 redis 將從 redis 6 開始使用的新的客戶端 伺服器協議,上的規範清楚地說明我們舊協議 resp2 的這種演進可以如何改進 redis 生態系統,其中最重要的是,resp3 比 re...
problem 為什麼會有options請求
為了安全考慮,瀏覽器對資源訪問有同源限制的問題,也就是web應用程式只能訪問和它同一協議同一網域名稱同一埠的web應用程式上的資源。通過跨域資源共享機制可以讓資源在瀏覽器中訪問與該資源本身不同域的資源,資源會發起乙個跨域的http請求。瀏覽器傳送options請求是一種cors預檢測的行為,主要用來...
為什麼CIO支援開源?
2001 年,美國設立乙個稱為 州 首席資訊官國家聯合會 nascio 的社團組織。nascio 含義是 na代表 national association 國家聯合會 scio 代表 state cio 州 cio cio代表 chief information officers 首席資訊官 嚴格...