Что должно стоять на первом месте в URL, хэше или строке запроса? - PullRequest
0 голосов
/ 25 марта 2019

В некоторых онлайн-статьях говорится, что в URL нет стандартов для querystring и hash, но мы следим за тем, что продолжает происходить.Итак, мой вопрос заключается в том, как лучше использовать строку запроса и хэш в одном и том же URL.

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

Ответы [ 2 ]

2 голосов
/ 25 марта 2019

В некоторых онлайн-статьях говорится, что в URL не существует стандарта для строки запроса и хэша

Либо они не правы, либо вы их неправильно истолковываете.

Строка запроса должна появляться перед идентификатором фрагмента (который вы называете хешем).

Спецификация показывает формат URI:

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Он четко показывает фрагмент, появляющийся после запроса.

если хеш следует за строкой запроса, он может стать значением для некоторых данных строки запроса

Не может. # - это специальный символ, указывающий начало фрагмента. Чтобы включить его в данные строки запроса, его необходимо экранировать как %23.

0 голосов
/ 25 марта 2019

Это то, что я пробовал в JavaScript:

window.location="alpha#abc?def=34";
console.log(window.location);

Результат был:

Location {
  hash: "#abc?def=34",
  search: "",
  ...otherData
}

А затем:

window.location="alpha?abc=34#def";
console.log(window.location);

Результат был:

Location {
  hash: "#def",
  search: "?abc=34",
  ...otherData
}

Очевидно, что JavaScript не различает ничего после символа #, в то время как строка запроса до хэша работает нормально.

Итак, сначала мы должны использовать строку запроса, а затем хеш.

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