grails - 查找带有 "+"的电子邮件时,通过电子邮件获取失败

标签 grails grails-orm

我有一个将某人的信息存储到数据库中的应用程序,但是当我尝试使用 GET 的 URL 时基于其电子邮件地址的用户 +在他们的电子邮件中找不到。

返回人员的 URL 示例:

https://www.someURL.com/api/people/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4d272225233e202439250d3e22202828202c2421632e2220" rel="noreferrer noopener nofollow">[email protected]</a>

返回人员的示例 URL(返回 null):

https://www.someURL.com/api/people/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="402a212e256b242f2500332f2d25252d21292c6e232f2d" rel="noreferrer noopener nofollow">[email protected]</a>

两封电子邮件都在数据库中,如 URL 中所写,因此这似乎不是拼写错误问题,我正在使用 postman 来测试 GET方法。为什么我找不到它们,我该如何才能找到它们,即使使用 +性格?

Working postman request

NOT working postman request

当我使用 id 搜索时,我能够找到该人,因此我知道该人存在。

Verification that person exists

最佳答案

我的建议是:将服务器实现从 GET 更改为 POST,并在请求正文中提供电子邮件作为字符串参数。它将防止出现此问题以及任何因转义 URI 中的特殊字符而出现的类似问题。

如果不可能,请尝试使用单个 ' 或双 " 引号来构建电子邮件地址,具体取决于您的网络服务器如何处理传入请求,这可能也会有所帮助.

很高兴知道“+”对于许多电子邮件提供商来说并不是真正的“有效”字符,这是有原因的。例如,Gmail 不允许您创建除 [A-z0-9](字母数字)和点 (.) 字符之外的任何字符的电子邮件地址。我很确定他们厌倦了使用复杂的正则表达式来验证输入电子邮件,而只是将其限制为基本的电子邮件。

关于grails - 查找带有 "+"的电子邮件时,通过电子邮件获取失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592530/

相关文章:

grails - 用于组合框的jQuery easyui数据网格编辑器未随grails一起加载

grails - 连接到Grails应用程序数据库

Grails/GGTS : compilation gives org. apache.tools.ant.BuildException : java. lang.OutOfMemoryError:超出 Java 堆空间/GC 开销限制

java - 动态查询关联的表示法

grails - 如何在 grails 中编写 hasMany 属性的约束

grails - 如何通过加入非主键列来创建关联

Grails AOP with aspectj 和/或 Groovy AOP 最好使用注解

grails - 将就地插件添加到 grails 3 项目

Grails:使用集成测试测试重定向

hibernate - 仅将一些属性绑定(bind)到 grails 域对象上?