Использование строк запроса в URI без проблем с декодированием браузера - PullRequest
0 голосов
/ 01 февраля 2020

Issue

Я пишу приложение, которое использует строки запроса.

Firefox декодирует URI в адресной строке, заменяя %20 пробелами. Это прерывает обновления и закладки для моего приложения.

Пример

Я использую React и Next. js (Я уверен на 99%, что проблема Firefox, а не Next. js). Вот событие щелчка:

onClick={() => Router.push(
  `/content/?program=${encodeURIComponent(program.name)}`
)}

Я также использовал:

onClick={() => Router.push({ 
  pathname: '/content/', 
  query: { program: program.name }
})}

Конечная точка для обоих:

/content/?program=Program%201

, но Firefox декодирует это:

/content/?program=Program 1

Интересно то, что window.location.search по-прежнему возвращает Program%201 (в отличие от Program 1 в адресной строке).

Что я узнал из поиск в Google

Я прочитал несколько сообщений StackOverflow по этому вопросу, но не нашел работающего решения.

Google использует "+" для пробелов, и это работает (даже в Firefox ). Поиск «почему это происходит» приводит к &q=why+is+this+happening

Несколько человек сказали, что %20 следует использовать вместо + при кодировании пробелов.

в браузере encodeURIComponent() и Функции encodeURI() заменяют пробелы на %20.

Должен ли я создать пользовательскую функцию encodeURI, которая работает в Google? Есть ли способ предотвратить взлом Firefox URI в адресной строке?

...