我正在编写一个符合JSON RPC的js库。规范是否允许客户沿着headers
字段向params
对象添加自定义字段(例如Request
)?
例如
{"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "headers": { "original-client": 12 }, "id": 1}
规范(https://www.jsonrpc.org/specification#request_object)没有提及有关添加其他字段的任何内容。
如果我的图书馆确实添加了header
字段,是否违反规范?
答案 0 :(得分:1)
这里有同样的问题。 (我要添加用户身份验证信息/消息签名...)
您说对了,Specification没有提及任何其他字段。因此,从法律上讲,如果不禁止使用,则可以使用。
另一方面,我在这里找到了至少一个参考实现:www.simple-is-better.org/rpc/jsonrpc.py,如果解码后的消息包含多余的字段,它将为您带来异常。该代码来自JSON-RPC 2.0规范的一位作者RolandKöbler。
YMMV。
编辑:我使用以下协议解决了此问题:
"rpc.secinfo"
发送符合标准的通知。 (rpc.
前缀是按规范保留的扩展名)"params"
字段包含任何适用的元数据(例如,用户名,签名){"jsonrpc": "2.0", "method": "rpc.secinfo", "params": {"user":"root", "signature":"0xDEADBEEF"}}<DELIM><payload><DELIM>
接收方可以像其他任何呼叫一样解码标头消息,只需要将标头应用于(检查sig,无论如何)标头即可。
讨论:
随时可以重用此协议,但请将此SO答案归功于
。