Двойная косая черта в URL в Outlook - PullRequest
5 голосов
/ 20 января 2010

URL нашей страницы поиска построен следующим образом:
http://www.example.com/results/name/John/city/Miami/gender/Male Это будет отображать каждого мужчины по имени Джон в Майами.

Если один из фильтров оставить пустым, URL будет выглядеть примерно так:
http://www.example.com/results/name/John/city//gender/Male
Таким образом, в URL есть две косые черты.

Похоже, Outlook не нравится. Когда вы нажимаете на второй URL, он удаляет одну из двух косых черт. Это оставляет URL-адрес, как это:
http://www.example.com/results/name/John/city/gender/Male
Персоны зовут Иоанна в городе "пол" ..

Как лучше всего решить эту проблему?

Ответы [ 7 ]

6 голосов
/ 20 января 2010

Это ошибка в Microsoft Office.

URL-адреса с двумя последовательными слешами разрешены RFC 2396 , но они обычно не используются. Как сказано в RFC (выписка из Приложения A):

abs_path      = "/"  path_segments
path_segments = segment *( "/" segment )
segment       = *pchar *( ";" param )

Обратите внимание, что сегмент определяется как содержащий НОЛЬ ИЛИ БОЛЬШЕ символов. (Вы можете утверждать, что это ошибка спецификации, и ее нельзя допускать ... но это так)

Как вы обнаружили, Microsoft Office будет "исправлять" URL-адреса, содержащие двойные косые черты. Это очевидно преднамеренная особенность "чистоты и последовательности". Нет способа переопределить или отключить его. Источник .

Итак, как и предполагали другие люди, вам, вероятно, придется изменить способ форматирования URL-адресов сервером.

2 голосов
/ 20 января 2010

Попробуйте заменить (одну из) косую черту на код ASCII 2F (десятичный 47).

1 голос
/ 11 января 2018

«Regkey» должен помочь: вам нужно реализовать этот ключ

Path: "HKEY_CURRENT_USER\Software\Microsoft\Office\Common"
Name: "AllowConsecutiveSlashesInUrlPathComponent"
Type: "REG_DWORD"
Value: "1"

Для реализации и более подробно см. здесь .

1 голос
/ 30 января 2012

Вы можете использовать - вместо пустого сегмента. Например:

http://www.example.com/results/name/John/city/-/gender/Male

1 голос
/ 20 января 2010

Стандарт состоит в том, чтобы свести две косые черты в одну, поэтому невозможно предотвратить это. Может быть хорошей идеей поместить что-то между этими слешами, чтобы указать на странице поиска, что это поле пустое.

В качестве альтернативы, вы можете изменить страницу поиска, чтобы использовать строку запроса, такую ​​как эта:

http://www.example.com/results?name=John&city=&gender=Male

0 голосов
/ 02 октября 2018

Я согласен с Питером, достаточно заменить второй "/" на "% 2F" или "% 2f" достаточно.

0 голосов
/ 20 января 2010

Если вы должны использовать косые черты, попробуйте исправить это на стороне сервера. Создайте список ключевых слов (city | results | ...) и, если за косой чертой следует одно из ключевых слов, обрабатывайте его как пустую запись. (отредактировано) Двойная косая черта не должна рассматриваться как одна, но, как вы выяснили, некоторые приложения "исправляют" это.

Альтернативный и стандартный способ исправить это - использовать заполнитель, обычно точку, потому что он не имеет особого значения:

http://example.com/results/name/./city/amsterdam

...