2014-11-08 6 views
0

Я использую эту ссылку для обмена своей страницей через google plus.Google plus url sharing

https://plus.google.com/share?url=http%3A%2F%2Fexample.com%2Fcompany%20name%2search 

поэтому я использую encodeURIComponent для получения этого URL-адреса (также пытался использовать encodeURI). , но при обмене поле появляется ссылка неверная. Это:

http://example.com/company 

Forsure я могу изменить «», например, «-» (или другой символ), но я использую значение из URL в моем AngulaJs приложение для корректной инициализации и это будет лучше использовать родной путь для этого.

В чем моя вина или есть какие-либо местные способы исправить это?

ответ

1

%20 - это закодированное пространство, которое не является допустимым символом URL. Наиболее часто используемый символ вместо пробела - -.

Лучшим подходом было бы нормализовать ввод в идентификатор, который вы будете использовать для запроса своей собственной базы данных. Например. Bob's Bar & Grill будет обрабатываться в bobs-bar-grill, а затем вы бы опрашивать базу данных, чтобы найти:

{ 
    "id": "bobs-bar-grill", 
    "name": "Bob's Bar & Grill" 
} 

Это и делает ваши URL-адреса в чистоте и лучше защищает вас с точки зрения безопасности произвольного пользовательского контента в URL.

В качестве последнего средства вы можете дважды закодировать путь, чтобы Google по-прежнему кодировал пробелы после того, как он однажды декодирует URL.

var url = "http://example.com/company name"; 
encodeURI(encodeURI(url)); 
// "http://example.com/company%2520name" 

И Google будет направлять пользователей на http://example.com/company%20name

+0

это не константа там (не «мой профиль»), но некоторые имя поставщика. Поэтому я хочу использовать собственный способ кодирования/декодирования URL-адреса. Конечно, я могу добавить символ, например '-'. Но это приложение angularJs, и я использую значение из url, когда приложение инициализируется. поэтому после этого нужно будет удалить этот символ «-». – BotanMan

+0

Я обновил ответ с рекомендованным вариантом и в крайнем случае. – abraham

+0

Я уже исправил это сам. В любом случае спасибо. Я буду отмечать ваш ответ как правильный. – BotanMan

Смежные вопросы