簡體   English   中英

沒有回調的JSONP如何工作?

[英]How is this JSONP without a callback working?

我使用的是客戶端SDK,該SDK在后台創建腳本並將其附加到<head> ,如下所示:

<script src="http://foo.com?foo=bar"></script>

請注意,沒有callback參數。

響應發送回以下內容(帶有標頭Content-Type: application/javascript ):

{ document.cookie="something=thing" }

並在瀏覽器中設置cookie(在開發工具中查看cookie時可以看到)。

奇怪的是,在腳本的URL中沒有回調參數,就像通常在JSONP請求中期望的那樣。

我試圖通過向本地網頁添加類似的腳本並點擊返回相同響應的本地服務器來復制此行為,但與SDK不同的是,它沒有設置cookie。 SDK本身非常簡單,我看不到發生任何其他魔術。

有人看過這樣的東西嗎? 它是如何工作的?

編輯:這是內部SDK方法和示例響應

    _jsonp: function(o, e) {
        var t = document.createElement("script");
        t.type = "text/javascript", t.src = e, t.async = !0, document.getElementsByTagName("head")[0].appendChild(t), o.log("SENT JSONP request: " + e)
    },

樣本回復:

響應頭

Connection: keep-alive
Content-Encoding: gzip
Content-Length: 158
Content-Type: application/javascript

反應體

{document.cookie=<redacted>}

盡管API源代碼中有方法名稱,但它不是JSONP。

JSONP是一種JavaScript程序,符合以下特定格式:僅包含帶有一個參數的函數調用,如果將其從JavaScript程序中取出並放入JSON文件,則該參數為JSON。

JSONP通過注入<script>元素來工作,該元素加載並執行JavaScript程序。

您在這里擁有的是一個不符合JSONP格式的JavaScript程序。

它仍然是一個JavaScript程序。

使用<script>加載仍然有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM