JSONP 是否需要使用 JavaScript?
Does JSONP require the use of JavaScript?
我对 JSONP 的细节含糊不清,这似乎根本不是一个合适的规范。
我正在编写一个 Perl 客户端来与具有 WebSocket JSONP 的服务器进行通信 API。
我需要使用 JavaScript 指定 JSONP 回调,还是可以通过其他方式完成?
是的,您需要使用 javascript。 JSONP 主要用于发出跨源 ajax 请求。并且您需要指定一个 javascript 函数,当您的 ajax 请求 returns 并响应时将调用该函数。
我相信可以在客户端使用 JSONP API 而无需 JavaScript,前提是 API 跟在 "common JSONP contract" 之后。后者意味着服务器需要 return JSON 数据包装到函数调用中,即服务器响应(正文)看起来像 jsonpCallback({"key": "value"})
.
要检索 JSON 有效载荷,您只需剥离函数包装器即可:
$server_response =~ s/^\s*\w+\((.*)\);?\s*$//s; # now it's pure JSON: '{"key": "value"}'
N.B。理论上,函数名称可能需要 much harder 正则表达式,但同样,如果 "common contract" 到位,您可以在 JSONP 请求中定义一个简单的回调函数名称。
我对 JSONP 的细节含糊不清,这似乎根本不是一个合适的规范。
我正在编写一个 Perl 客户端来与具有 WebSocket JSONP 的服务器进行通信 API。
我需要使用 JavaScript 指定 JSONP 回调,还是可以通过其他方式完成?
是的,您需要使用 javascript。 JSONP 主要用于发出跨源 ajax 请求。并且您需要指定一个 javascript 函数,当您的 ajax 请求 returns 并响应时将调用该函数。
我相信可以在客户端使用 JSONP API 而无需 JavaScript,前提是 API 跟在 "common JSONP contract" 之后。后者意味着服务器需要 return JSON 数据包装到函数调用中,即服务器响应(正文)看起来像 jsonpCallback({"key": "value"})
.
要检索 JSON 有效载荷,您只需剥离函数包装器即可:
$server_response =~ s/^\s*\w+\((.*)\);?\s*$//s; # now it's pure JSON: '{"key": "value"}'
N.B。理论上,函数名称可能需要 much harder 正则表达式,但同样,如果 "common contract" 到位,您可以在 JSONP 请求中定义一个简单的回调函数名称。