Безопасно ли использовать window.location для запроса параметров GET страницы?

Я провожу экспертную оценку и обнаружил, что люди используют window.location.search, чтобы проверить, какие парметы были отправлены на данную (поисковую) страницу.

Это безопасно? Я думал, что мы, вероятно, могли бы напечатать параметры в выводе HTML внутри блока скрипта и проверить напечатанные переменные вместо запроса window.location.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
5 406
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Если включен javascript, использование window.location.search безопасно.

И просто бесполезная дополнительная информация: это свойство, насколько я знаю, было введено в Netscape Navigator 2 / MS Internet Explorer 3, поэтому я бы сказал, что его довольно безопасно использовать, даже если оно не является частью какого-либо стандарта (пока ).

Это часть последнего рабочего проекта ECMAScript. Вы должны быть в безопасности, используя его: w3.org/TR/Window/#location

Prestaul 21.01.2009 02:12

Безопасно ли использовать window.location.search в 2017 году? :-)

JLR 11.06.2017 18:47

Безопасно, как в «безопасности» или «это будет работать всегда»?

Несмотря на то, что window.location широко распространен, он все еще не является частью стандарта W3C. Однако он был добавлен в рабочий черновик спецификации в 2006 году: в основном это означает, что браузер может или не может поддерживать его. Так что, исходя из принципа «будет ли это работать всегда», я думаю, вы рискуете.

Ответ принят как подходящий

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

Сохраните следующий код как файл html и запустите его в браузере:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en">
    <head>
        <title>test</title>
    </head>
    <body>
        <a href = "javascript:void(0);" 
                onclick = "alert(window.location);">click me</a>
    </body>
</html>

Якорь «щелкните меня» отобразит текущее расположение окна onclick. Однако, если вы добавите что-нибудь в адресную строку и снова нажмете ссылку, он сообщит о том же, что и в первый раз.

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

Is it safe to do so?

Да. Пример кода для получения параметров в виде карты имя-> значение, предполагая, что вам не нужно несколько значений для каждого параметра:

function getParameters() {
    var parameters= new Object();
    var parts= window.location.search.substring(1).split('\x26');
    for (var parti= parts.length; parti-->0;) {
        var subparts= parts[parti].split(';'); // support semicolon separators as well as ampersand (see HTML 4.01 section B.2.2)
        for (var subparti= subparts.length; subparti-->0;) {
            var parparts= subparts[subparti].split('=', 2);
            if (parparts.length==2)
                parameters[decodeURIComponent(parparts[0])]= decodeURIComponent(parparts[1]);
        }
   }
   return parameters;
}

Другие вопросы по теме