【发布时间】:2016-06-05 00:30:06
【问题描述】:
scope = scope-token *( SP scope-token ) scope-token = 1*( %x21 / %x23-5B / %x5D-7E )是什么意思
【问题讨论】:
scope = scope-token *( SP scope-token ) scope-token = 1*( %x21 / %x23-5B / %x5D-7E )是什么意思
【问题讨论】:
所以我的解释是
scope-token = 1*( %x21 / %x23-5B / %x5D-7E )
似乎是说 scope-token 可以是定义的十六进制字符范围中的 1 个或多个 ascii 字符。所以基本上是 x21 (!) 到 x7E (~),但不允许 x22 (") 和 x5C (\)。有关字符列表及其十六进制代码,请参阅 here。
和
scope = scope-token *( SP scope-token )
建议 scope 是一个 scope-token(如上定义),附加零个或多个 SP scope-tokens,其中 SP 是空格字符。
所以一个有效的范围字符串应该是:
scope = i am 5 scopes !!!!
但这些不是有效的范围字符串:
scope = "scope1" "scope2" "scope3"
scope = scope1\scope2\scope3
【讨论】:
表达式是ABNF。
【讨论】:
我在 javascript sn-p 中使用这个正则表达式来测试 OAuth2 服务器实现上的错误响应的 error_description 值,因为 error_description 还需要按照规范使用这些字符约束:https://www.rfc-editor.org/rfc/rfc6749#section-5.2
const regex = /1*[\x21\x23-\x5B\x5D-\x7E]/g
【讨论】: