Javascript 没有回调的JSONP是如何工作的?
我正在使用一个客户端SDK,它在引擎盖下创建一个脚本并将其附加到Javascript 没有回调的JSONP是如何工作的?,javascript,jsonp,Javascript,Jsonp,我正在使用一个客户端SDK,它在引擎盖下创建一个脚本并将其附加到,如下所示: 请注意,没有回调参数 响应返回以下内容(标题为内容类型:application/javascript): {document.cookie=“something=thing”} 它在浏览器中设置cookie(我在dev工具中查看cookie时可以看到) 奇怪的是,在脚本的URL中没有回调参数,正如您通常在JSONP请求中所期望的那样 我试图通过向本地网页添加一个类似的脚本来复制这种行为,并且正在访问一个返回相同响应的
,如下所示:
请注意,没有回调
参数
响应返回以下内容(标题为内容类型:application/javascript
):
{document.cookie=“something=thing”}
它在浏览器中设置cookie(我在dev工具中查看cookie时可以看到)
奇怪的是,在脚本的URL中没有回调参数,正如您通常在JSONP请求中所期望的那样
我试图通过向本地网页添加一个类似的脚本来复制这种行为,并且正在访问一个返回相同响应的本地服务器,但与SDK不同,它没有设置cookie。SDK本身非常简单,我看不到任何其他神奇的事情发生
以前有人见过这样的东西吗?它是如何工作的
编辑:下面是内部SDK方法和示例响应
样本响应:
响应头
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 158
Content-Type: application/javascript
响应体
{document.cookie=}
尽管API源代码中有方法名,但它不是JSONP
JSONP是一个符合以下特定格式的JavaScript程序:只包含一个函数调用和一个参数,如果从JavaScript程序中取出并放入JSON文件,则该参数将为JSON
JSONP通过注入一个
元素来加载和执行JavaScript程序
这里的JavaScript程序不符合JSONP格式
它仍然是一个JavaScript程序
使用
加载仍然有效。这不是真正的jsonp请求。它实际上只是一个javascript文件。@KevinB是的,我想我只是想知道这个响应是如何执行的。此外,他们在幕后称之为\u jsonp
方法,所以我假设他们的意图是发出一个jsonp请求。这不是jsonp请求,因为请求没有返回jsonp。它正在返回javascript。jsonp响应也是javascript,但并非所有javascript都是jsonp。@KevinB好的,让我们假设他们的方法名jsonp
只是一个误称。我们还没有回答关于如何执行响应的问题。FWIW,这是整个缩小的SDK,如果你在chrome或其他任何东西中有一个美化器,它可以被读取:所有这些代码所做的就是设置一个cookie。当您包含它时,它将设置一个cookie。那是。。。就是这样{document.cookie=}
不是一个对象,它只是简单的旧javascript。它很可能只是一个警报('Hello World!'),然后会弹出一个警报。谢谢。FWIW,我没有意识到{document.cookie=“something=thing”}
是有效的JavaScript,但是当我在浏览器控制台中运行它时,它工作了。将在时间限制到期时接受答案赋值表达式周围的块完全没有意义。
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 158
Content-Type: application/javascript