API允许用户使用(+)签名用户名登录

问题描述 投票:-3回答:2

目前,由于(+)符号,使用[email protected]等电子邮件的用户无法通过API。使用这样的用户ID进行数据库调用时,会产生结果。但是,在进行这样的api调用时。

api.hq.org/user?token=1234567&[email protected]

它没有带来任何结果。我试图找到一种方法来允许这样的用户返回结果。我知道它的URL编码,但我想知道是否有人曾经遇到过这种情况?

php rest api symfony urlencode
2个回答
0
投票

+是URL中的元字符并转换为空格。

这不太对。

RFC 3986标准化URI,并在appendix-A中包含URI语法的Augmented Bachus-Naur Form描述。 +(U + 002B)是sub-delims的成员,这意味着它是pchar的成员,因此被列入query的候选人。

从历史上看,您遇到的问题更可能是堆栈的某些部分假设您的queryapplication/x-www-form-urlencoded,这是用HTML提交表单数据的选项之一。这种类型的规则包括serializing步骤,用plus(U + 002B)替换空格(U + 0020),以及用百分比编码形式替换。

当然,反序列化器在从中提取数据时用空格替换URL中的加号。

但基本草图是正确的 - 如果您的序列化器和反序列化器没有正确平衡,那么您就可以使用a bad day


1
投票

+是URL中的元字符,并转换为空格。

如果你想要一个真正的+你需要逃脱它,可能使用rawurlencode()

© www.soinside.com 2019 - 2024. All rights reserved.