Hotmail не может правильно читать почту с помощью! в URL
У меня есть одностраничное приложение с такими URL http://example.com/#!something/something/
, Проблема в том, что когда я отправляю электронное письмо, содержащее ссылку на такой URL-адрес, пользователи hotmail получают их неправильно (я заметил это только в hotmail, все остальные хороши).
!
закодирован в %21
что делает URL неверным: http://example.com/#%21something/something/
Любые идеи, что можно сделать, кроме переписывания моего приложения:-). Я использую http://swiftmailer.org/ для отправки электронной почты, но я очень сомневаюсь, что это актуально.
1 ответ
Согласно RFC3986, "!"
символ действителен во фрагменте (#...
) компонент URI, поэтому он не должен кодироваться с использованием процентного кодирования. В этом смысле это похоже на ошибку outlook.com.
Одним из обходных путей является использование текстовых писем: на основе моих тестов outlook.com кодирует !
Только HTML-ссылки электронной почты и обычные текстовые сообщения безопасны.
Реальное решение, однако, состоит в том, чтобы сделать вашу собственную нормализацию в коде на стороне клиента. Взлом и нормализация URL-адресов - действительно сложная задача, поэтому я ожидаю также проблем с другими почтовыми клиентами. Запуск JavaScript decodeUriComponent()
против window.location.hash
должен дать вам незашифрованный "#!/something/something"
версия независимо от того, был ли восклицательный знак закодирован или нет. Я понимаю, что это требует изменения веб-приложения, которого вы хотели избежать, но, насколько мне известно, это путь.