1

我有一个单页应用程序,其 URL 类似于http://example.com/#!something/something/. 问题是,当我发送包含此类 url 链接的电子邮件时,hotmail 用户会弄错(我只在 hotmail 中注意到它,其他人都很好)。

!编码为%21使 url 错误:http://example.com/#%21something/something/

除了重写我的应用程序之外可以做什么的任何想法:-)。我正在使用swiftmailer发送电子邮件,但我非常怀疑这是否相关。

4

1 回答 1

4

根据 RFC3986,该"!"字符在 URI 的片段 ( #...) 组件中有效,因此不应使用百分比编码对其进行编码。从这个意义上说,这似乎是一个 Outlook.com 错误。

一种解决方法是使用纯文本电子邮件:根据我的测试,outlook.com!仅对 HTML 电子邮件链接进行编码,而纯文本电子邮件是安全的。

然而,真正的解决方案是在客户端代码中进行自己的规范化。URL 破解和规范化是一项非常棘手的业务,因此我预计其他电子邮件客户端也会出现问题。无论感叹号是否被编码,decodeUriComponent()运行JavaScriptwindow.location.hash都应该为您提供未编码的版本。"#!/something/something"我理解这需要修改您想要避免的 Web 应用程序,但据我所知,这是要走的路。

于 2014-09-17T07:07:12.220 回答