SonarJs по-прежнему показывает предупреждение о междоменной проблеме postMessage
Это правило проверки от RSPEC-2819
Авторам не следует использовать ключевое слово подстановки ( *) в аргументе targetOrigin в сообщениях, которые содержат какую-либо конфиденциальную информацию, поскольку в противном случае невозможно гарантировать, что сообщение будет доставлено только получателю, для которого оно было предназначено.
Я предполагаю, что это требует *
не может быть использован как targetOrigin
, Но он по-прежнему показывает предупреждение, когда я использую предполагаемый домен как targetOrigin
как ниже:
Пожалуйста, кто-нибудь может сказать мне, как пройти эту проверку,
Любая помощь будет оценена
2 ответа
Это правило обнаруживается только если метод postMessage
вызывается для объекта с именем, содержащим window
в этом. Исходный код: PostMessageCheck.java. Чтобы обойти это, просто назначьте contentWindow
объект в другой, как это:
var content = this.elem.contentWindow;
content.postMessage('your message', window.location.origin);
Столкнулись с аналогичной проблемой в sonarQube. Исправление ниже сработало. ;-). просто избавьтесь от использования объекта окна напрямую.
Фактический код: window.parent.postMessage ("данные",parenturl);
Исправлено:var content=window;content.parent.postMessage("данные",parenturl);