Поддерживают ли браузеры символы в фрагментах URL, которые они не должны? - PullRequest
1 голос
/ 28 июня 2019

Согласно этому вопросу , многие символы (#, <,>, [,], {,}, ...) должны быть запрещены во фрагментах URL (то есть в части URL)после #).Но написанный мной тестовый скрипт, похоже, указывает, что большинство современных браузеров допускают некоторые из этих символов:

const unsupported = [];
for (let charCode = 32; charCode < 127; charCode++) {
  const c = String.fromCharCode(charCode);
  window.location = `#${c}`;
  const afterRoundtrip = window.location.href.match(/#(.*)/)[1];
  const characterIsSupported = afterRoundtrip === c;
  if (!characterIsSupported) {
    unsupported.push(c);
  }
}
console.log('Unsupported: ', unsupported);

Этот скрипт выполняет итерацию по всем печатным символам ASCII, пытается добавить каждый из них в URL после хэша, читает егоназад и выводит символы, которые браузер не разрешал.

В Chrome вывод был [" ", """, "<", ">", "`"];как на Safari, так и на Edge это было [" "].Поэтому кажется, что почти все символы ASCII разрешены в фрагментах URL.

Я в замешательстве: должны ли браузеры разрешать все эти специальные символы в фрагментах URL?Если да, могу ли я полагаться на это поведение и использовать эти символы для одностраничных приложений?Есть какой-то стандарт, о котором я не знаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...