这个没有回调的 JSONP 是如何工作的?
How is this JSONP without a callback working?
我正在使用 client-side SDK,它会在后台创建一个脚本并将其附加到 <head>
,如下所示:
<script src="http://foo.com?foo=bar"></script>
请注意没有 callback
参数。
响应发回以下内容(header Content-Type: application/javascript
):
{ document.cookie="something=thing" }
它在浏览器中设置 cookie(我在开发工具中查看 cookie 时可以看到)。
奇怪的是,在脚本的 URL 中,没有回调参数,正如您通常在 JSONP 请求中所期望的那样。
我试图通过向本地网页添加一个类似的脚本来复制此行为,并且我正在访问一个本地服务器,returns 有相同的响应,但它没有设置 cookie,这与 SDK 不同。 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)
},
响应示例:
回复header秒
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 158
Content-Type: application/javascript
回应body
{document.cookie=<redacted>}
尽管 API 源代码中有方法名称,但它不是 JSONP。
JSONP是一个JavaScript程序,它符合以下特定格式:只包含一个函数调用,只有一个参数,如果取出来就是JSON JavaScript 程序并放入 JSON 文件。
JSONP 通过注入一个 <script>
元素来加载和执行 JavaScript 程序。
您这里的 JavaScript 程序不符合 JSONP 格式。
它仍然是一个 JavaScript 程序。
使用 <script>
加载仍然有效。
我正在使用 client-side SDK,它会在后台创建一个脚本并将其附加到 <head>
,如下所示:
<script src="http://foo.com?foo=bar"></script>
请注意没有 callback
参数。
响应发回以下内容(header Content-Type: application/javascript
):
{ document.cookie="something=thing" }
它在浏览器中设置 cookie(我在开发工具中查看 cookie 时可以看到)。
奇怪的是,在脚本的 URL 中,没有回调参数,正如您通常在 JSONP 请求中所期望的那样。
我试图通过向本地网页添加一个类似的脚本来复制此行为,并且我正在访问一个本地服务器,returns 有相同的响应,但它没有设置 cookie,这与 SDK 不同。 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)
},
响应示例:
回复header秒
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 158
Content-Type: application/javascript
回应body
{document.cookie=<redacted>}
尽管 API 源代码中有方法名称,但它不是 JSONP。
JSONP是一个JavaScript程序,它符合以下特定格式:只包含一个函数调用,只有一个参数,如果取出来就是JSON JavaScript 程序并放入 JSON 文件。
JSONP 通过注入一个 <script>
元素来加载和执行 JavaScript 程序。
您这里的 JavaScript 程序不符合 JSONP 格式。
它仍然是一个 JavaScript 程序。
使用 <script>
加载仍然有效。